228 votes

git git---dir ne fonctionne ne pas comme prévu

Je suis en train de lancer git à partir d'un autre répertoire que je suis. Donc par exemple si je suis dans:

cd /home/domain/
git status << runs perfect ie
# On branch master
# Your branch is ahead of 'origin/master' by 6 commits.

Alors maintenant, je veux exécuter cette commande à partir d'un autre répertoire à l'aide de l' --git-dir option.

Donc disons que je suis en root/ et essayez ce qui suit:

git --git-dir="/home/domain/" status
## Error 
fatal: Not a git repository: '/home/domain/'

J'ai aussi essayé d'inclure l' .git le dossier c'est à dire

git --git-dir="/home/domain/.git/" status

Mais on dirait qu'il essaie d'exécuter git à partir de la racine, c'est à dire la suppression de tout, de mon domaine de dossier et l'ajout de la racine.

J'espère que quelqu'un pourra vous conseiller sur ce que je fais mal.

Merci d'avance si vous pouvez conseiller.

335voto

Jon Gretar Points 2846

Vous devez définir le répertoire de travail aussi bien. Confuse je sais, mais c’est une chose de flexibilité.

Vous pouvez lire un peu plus ici

148voto

VonC Points 414372

Départ git 1.8.5 (qui devrait sortir la semaine prochaine), il sera encore plus simple:

 git -C "/home/domain/" status

Pas besoin de programmer --git-dir et --work-tree plus!


Voir commettre 44e1e4 par Nazri Ramliy:

Il faut plus de pressions sur les touches d'invoquer la commande git dans un répertoire différent, sans quitter le répertoire courant:

  1. (cd ~/foo && git status)

  2. git --git-dir=~/foo/.git --work-dir=~/foo status

Les méthodes présentées ci-dessus sont acceptables pour l'écriture de scripts, mais sont trop lourdes pour rapide de la ligne de commande invocations.

Avec cette nouvelle option, le ci-dessus peut être fait avec moins de touches:


  1. GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
  2. (cd ../..; git grep foo)

43voto

Greg Hewgill Points 356191

Basé sur votre commentaire ci-dessus, il semble que vous êtes toujours en cours d'exécution sur un problème:

root@erx [/]# git --git-dir=/home/domaine/.git --travail-arbre=/home/domaine/ pull origin master
fatale: /usr/local/libexec/git-core/git-pull ne peuvent pas être utilisés sans un arbre de travail

Il semble que vous pourriez être l'intention de l'exécuter à partir d' crontab ou quelque chose. Vous feriez mieux d'utiliser cd pour passer votre répertoire de travail. Par exemple:

root@erx [ / ] # cd /home/domaine && git pull origin master)

Ce sera temporairement (dans un shell interne est exécuté, qui est ce que les parenthèses ne) de changer le répertoire /home/domain, puis exécutez git pull origin master. Après la commande est terminée, votre répertoire courant reste ce qu'il était avant la commande.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X