Ab Git 1.8.5 (Q4 2013) können Sie "einen Git-Befehl verwenden, ohne jedoch die Verzeichnisse wechseln zu müssen".
Genau wie „ make -C <directory>
“, „ git -C <directory> ...
“ sagt Git , dorthin zu gehen , bevor irgendetwas anderes zu tun .
Siehe Commit 44e1e4 von Nazri Ramliy :
Es sind mehr Tastendrücke erforderlich, um den Git-Befehl in einem anderen Verzeichnis aufzurufen, ohne das aktuelle Verzeichnis zu verlassen:
(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
Die oben gezeigten Methoden sind für die Skripterstellung akzeptabel, für schnelle Befehlszeilenaufrufe jedoch zu umständlich.
Mit dieser neuen Option können die oben genannten Schritte mit weniger Tastenanschlägen ausgeführt werden:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Seit Git 2.3.4 (März 2015), und verpflichten 6a536e2 von Karthik Nayak ( KarthikNayak
) , git
behandeln wird " git -C '<path>'
" als no-op , wenn <path>
leer.
' git -C ""
' stirbt unbeholfen mit dem Fehler " Cannot change to ''
", während die Shell cd "" als No-Op behandelt.
Nehmen Sie das Verhalten der Shell als Präzedenzfall und lehren Sie git
, -C "" 'auch als No-Op zu behandeln.
4 Jahre später dokumentiert Git 2.23 (Q3 2019), dass ' git -C ""
' funktioniert und das Verzeichnis nicht wechselt
Es verhält sich seit 6a536e2 so ( git
: " git -C '<path>'
" als No-Op behandeln, wenn <path>
es leer ist, 2015-03-06, Git v2.3.4).
Das heißt, die Dokumentation enthält jetzt (endlich):
Wenn ' <path>
' vorhanden, aber leer ist, z. B. -C ""
, bleibt das aktuelle Arbeitsverzeichnis unverändert.
Sie können git -C
als Beispiel die Verwendung mit Git 2.26 (Q1 2020) sehen.
Sehen Sie verpflichten b441717 , begehen 9291e63 , begehen 5236fce , begehen 10812c2 , begehen 62d58cd , begehen b87b02c , begehen 9b92070 , begehen 3595d10 , begehen f511bc0 , begehen f6041ab , begehen f46c243 , begehen 99c049b , begehen 3.738.439 , begehen 7.717.242 , begehen b8afb90 (20. Dezember 2019) von Denton Liu ( Denton-L
) .
(Zusammengeführt von Junio C Hamano - gitster
- in Commit 381e8e9 , 05. Februar 2020)
t1507
: in der Reihe full_name()
Unterzeichnet von: Denton Liu
Vorher rannten wir test_must_fail full_name
. Sollte test_must_fail
jedoch nur für Git-Befehle verwendet werden.
Inline, full_name()
damit wir test_must_fail
den git
Befehl direkt verwenden können.
Bei full_name()
der Einführung in 28fb84382b ("Introduce <branch>@{upstream}
notation", 10.09.2009, Git v1.7.0-rc0 - merge ) war die git -C
Option noch nicht verfügbar (da sie in 44e1e4d67d eingeführt wurde (" git
: in einem angegebenen Verzeichnis ausführen) mit der Option -C ", 09.09.2013, Git v1.8.5-rc0 - Zusammenführung in Stapel 5 aufgeführt )).
Infolgedessen wurde durch die Hilfsfunktion die Notwendigkeit beseitigt, cd
jedes Mal manuell zu arbeiten. Da git -C
es jetzt verfügbar ist, können wir es stattdessen einfach und inline verwenden full_name()
.