241 votes

Comment exécuter une commande Git sans être dans le référentiel ?

Existe-t-il un moyen d'exécuter des commandes Git sur un référentiel sans être dans ce référentiel ?

Par exemple quelque chose comme ceci : git /home/repo log ?

S'il vous plaît ne me dites pas de cd à cela. Je le fais via un appel exec

116voto

max Points 16106

Essayer:

 git --git-dir=/home/repo/.git log

Il est important de donner le chemin jusqu'au répertoire .git de votre référentiel. Sinon, vous n'obtiendrez qu'un message d'erreur qui dit quelque chose comme :

 fatal: Not a git repository

18voto

alberto56 Points 534

En fait, vous devez utiliser --git-dir et --work-tree ensemble. Voici un exemple:

 local [] Desktop: mkdir git
local [] Desktop: cd git
local [] git: touch README.txt
local [] git: git init
Initialized empty Git repository in /Users/albert/Desktop/git/.git/
local [] git: cd ..
local [] Desktop: git --work-tree=git --git-dir=git/.git add .
local [] Desktop: git --work-tree=git --git-dir=git/.git commit -a -m 'initial commit, called from outside the git directory'
[master (root-commit) ee951b1] initial commit, called from outside the git directory
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README.txt
local [] Desktop: cd git
local [] git: git log --pretty=oneline
ee951b161053e0e0948f9e2a36bfbb60f9c87abe initial commit, called from outside the git di

13voto

penny chan Points 155

J'ai essayé plusieurs fois ! J'ai enfin compris !

git -C dir --no-pager log --format='%an' -1 filename

rappelez-vous, veuillez ne pas ajouter .git à votre

-C dir

6voto

Paula Points 41

Pour toute commande git, vous pouvez faire :

 git --git-dir=<PATH-TO-REPO>/.git --work-tree=<PATH-TO-REPO> <git-command>

Par exemple, si vous voulez faire un statut git :

  git --git-dir=/home/myrepo/.git --work-tree=/home/myrepo/  status

ou si vous voulez vérifier la branche dans laquelle se trouve le dépôt :

 git --git-dir=/home/myrepo/.git --work-tree=/home/myrepo/  rev-parse --abbrev-ref HEAD

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