À partir de git 1.8.5 (Q4 2013) , vous pourrez "utiliser une commande Git, mais sans avoir à changer de répertoire".
Tout comme " make -C <directory>
", " git -C <directory> ...
" dit à Git d'y aller avant de faire autre chose .
Voir commit 44e1e4 de Nazri Ramliy :
Il faut plus de touches pour appeler la commande Git dans un répertoire différent sans quitter le répertoire courant:
(cd ~/foo && git status)
git --git-dir=~/foo/.git --work-tree=~/foo status
GIT_DIR=~/foo/.git GIT_WORK_TREE=~/foo git status
(cd ../..; git grep foo)
for d in d1 d2 d3; do (cd $d && git svn rebase); done
Les méthodes présentées ci-dessus sont acceptables pour les scripts mais sont trop lourdes pour des appels rapides en ligne de commande.
Avec cette nouvelle option, ce qui précède peut être fait avec moins de frappes:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Depuis Git 2.3.4 (mars 2015), et commit 6a536e2 par Karthik Nayak ( KarthikNayak
) , git
traitera " git -C '<path>'
" comme un no-op quand il <path>
est vide.
' git -C ""
' meurt inutilement avec l'erreur " Cannot change to ''
", alors que le shell traite le cd "" 'comme un no-op.
En prenant le comportement du shell comme précédent, apprenez également git
à traiter -C "" 'comme un no-op.
4 ans plus tard, Git 2.23 (Q3 2019) documente que ' git -C ""
' fonctionne et ne change pas de répertoire
Il se comporte ainsi depuis 6a536e2 ( git
: traiter " git -C '<path>'
" comme un no-op lorsqu'il <path>
est vide, 2015-03-06, Git v2.3.4).
Cela signifie que la documentation comprend maintenant (enfin):
Si ' <path>
' est présent mais vide, par exemple -C ""
, le répertoire de travail actuel reste inchangé.
Vous pouvez voir git -C
utilisé avec Git 2.26 (Q1 2020), à titre d'exemple.
Voir commit b441717 , commit 9291e63 , commit 5236fce , commit 10812c2 , commit 62d58cd , commit b87b02c , commit 9b92070 , commit 3595d10 , commit f511bc0 , commit f6041ab , commit f46c243 , commit 99c049b , commit 3738439 , commit 77172490 , commit b8af ) par Denton Liu ( Denton-L
) .
(Fusionné par Junio C Hamano - gitster
- en commit 381e8e9 , 05 fév 2020)
t1507
: en ligne full_name()
Signé par: Denton Liu
Avant, nous courions test_must_fail full_name
. Cependant, test_must_fail
ne doit être utilisé que sur les commandes git.
Inline full_name()
afin que nous puissions utiliser directement test_must_fail
la git
commande.
Lorsqu'elle a full_name()
été introduite dans 28fb84382b ("Introduce <branch>@{upstream}
notation", 2009-09-10, Git v1.7.0-rc0 - merge ), l' git -C
option n'était pas encore disponible (puisqu'elle a été introduite dans 44e1e4d67d (" git
: exécutée dans un répertoire donné with -C option ", 2013-09-09, Git v1.8.5-rc0 - fusion répertoriée dans le lot # 5 )).
En conséquence, la fonction d'assistance a supprimé la nécessité de manuellement à cd
chaque fois. Cependant, étant donné qu'il git -C
est disponible maintenant, nous pouvons simplement l'utiliser à la place et en ligne full_name()
.