Git changer de répertoire de travail
Je veux travailler avec Git, mais l'arbre de travail doivent être éloignées. Par exemple: si j'ai mon projet stocké à l'intérieur de ~/project
et project.git
stockées à l'intérieur de ~/git/project.git
.
Ce que j'ai changé de travail de l'arbre via config:
worktree=/Users/myuser/project
Et je suis en mesure d'engager et de vue diff, mais quand j'ai essayé de faire git stash
, je suis d'erreur:
fatale: /usr/libexec/git-core/git-stash ne peuvent pas être utilisés sans un arbre de travail.
Comment stocker .git
répertoire loin de l'arbre de travail?
Et pourquoi j'obtiens cette erreur?
git config --get core.worktree
retourne corriger répertoire de travail....
--git-dir
ou de l'environnement de jeu de var GIT_DIR
, voir acceptée réponse de stackoverflow.com/questions/5283262/...J'ai vu la réponse, mais je suppose que, si je remplace GIT_DIR il va provoquer quelques dégâts lors de travail avec peu de référentiels dans la courte période de temps. J'ai trouvé worktree option de configuration, mais rien sur le répertoire de travail... Référentiel existent aussi, et je ne peux pas courir
git init --git-dir
. Comment utiliser --git-dir? toute la documentation? Pourrait-il être réglés via la config?Normalement git recherche un .répertoire git dans le répertoire de travail courant. Si elle n'est pas là, il regarde dans le répertoire parent et ainsi de suite jusqu'à ce qu'il atteigne le répertoire racine. Dans votre installation, il ne sera jamais le trouver .git et, par conséquent, il ne sera également pas trouver .git/config. Donc, vous devez spécifier l'emplacement de la .répertoire git. Peut-être que vous pourriez utiliser un alias différent pour différents projet?
Merci beaucoup. L'explication ci-dessus est grande. J'ai la configuration des variables d'environnement GIT_DIR et GIT_WORK_TREE et tout devient OK. Quelque chose je vais le découvrir plus tard: option de configuration pour worktree. Pourquoi existe-t-elle?
OriginalL'auteur ValeriiVasin | 2013-05-28
Vous devez vous connecter pour publier un commentaire.
La suite semble fonctionner, de s'adapter à vos besoins:
EDIT: Notez que vous n'avez pas à spécifier
--work-tree
après l'opération a été initialisé depuis cette valeur est stockée dansgit/test/config
.Vous pouvez aussi les cd-travail/test et de s'engager à partir de là:
Ensuite utiliser un chemin absolu pour
--git-dir
ou un ensembleGIT_DIR
.OriginalL'auteur devconsole
Correction pour
--git-dir
drapeau utilisation:utilisation:
au lieu de:
OriginalL'auteur ikandars
Vous pouvez utiliser un .git-dir en dehors du dossier de votre projet sans avoir à écrire le chemin d'accès à chaque commande.
Il suffit de créer un fichier nommé
.git
dans votre répertoire de travail et ajouter du contenu comme ceci:Comme Chemin, vous pouvez utiliser le chemin absolu et le chemin d'accès relatif top le répertoire de travail.
OriginalL'auteur Radon8472
Je vois 4 options différentes selon l'endroit où votre point de départ.
Vous avez un dépôt distant (par exemple sur GitHub) que vous souhaitez travailler au sein d'un système de fichiers distant (par exemple, Samba). Dans ce cas, vous pouvez simplement clone comme ceci:
/votre/local/repository/dir et /votre/à distance/espace de travail/dir ne devrait pas exister déjà et sera créé par Git correctement. Après, vous pouvez simplement travailler dans le système de fichiers distant, comme d'habitude, mais sans la performance typique des problèmes qui se produisent sur les systèmes de fichiers distants.
Vous disposez déjà d'un référentiel et de l'espace de travail sur un système de fichiers distant. Dans ce cas, il suffit de déplacer l' .répertoire git d'un chemin d'accès local et de créer un
.git
fichier dans votre arbre de travail avec ce contenu:Vous avez déjà un répertoire de travail sur votre système de fichiers distant qui n'est pas attaché à votre télécommande dépôt Git encore. Dans ce cas, il suffit d'exécuter
quelque part sur votre système de fichiers local, puis de créer un
.git
fichier dans votre travail dir comme décrit dans l'option 3 ou comme décrit dans la Radon8472's réponse.OriginalL'auteur Patrick Fink