Począwszy od gita 1.8.5 (IV kwartał 2013 r.) , Będziesz mógł „używać polecenia Git, ale bez konieczności zmiany katalogów”.
Podobnie jak „ make -C <directory>”, „ git -C <directory> ...” każe Gitowi udać się tam, zanim zrobi cokolwiek innego .
Zobacz commit 44e1e4 autorstwa Nazri Ramliy :
Więcej naciśnięć klawiszy wymaga wywołania polecenia Git w innym katalogu bez opuszczania bieżącego katalogu:
(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
Metody pokazane powyżej są dopuszczalne dla skryptów, ale są zbyt kłopotliwe dla szybkich wywołań z wiersza poleceń.
Dzięki tej nowej opcji można to zrobić przy mniejszej liczbie naciśnięć klawiszy:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Ponieważ Git 2.3.4 (marzec 2015), a także zobowiązać 6a536e2 przez Karthik Nayaka ( KarthikNayak) , gitbędzie leczyć " git -C '<path>'" jako nie-op, gdy <path>jest pusta.
„ git -C ""” niepomyślnie umiera z błędem „ Cannot change to ''”, podczas gdy powłoka traktuje cd „” jako brak możliwości działania.
Biorąc zachowanie powłoki za precedens, naucz gitrównież traktować -C „” jako brak możliwości.
4 lata później Git 2.23 (III kwartał 2019 r.) Dokumentuje, że „ git -C ""” działa i nie zmienia katalogu
Zachowuje się tak od 6a536e2 ( git: traktuj „ git -C '<path>'” jako brak możliwości, gdy <path>jest pusty, 2015-03-06, Git v2.3.4).
Oznacza to, że dokumentacja teraz (wreszcie) obejmuje:
Jeśli „ <path>” jest obecne, ale puste, np -C "". Bieżący katalog roboczy pozostaje niezmieniony.
git -CJako przykład możesz użyć Git 2.26 (Q1 2020).
Patrz popełnienia b441717 , popełnienia 9291e63 , popełnienia 5236fce , popełnienia 10812c2 , popełnienia 62d58cd , popełnienia b87b02c , popełnienia 9b92070 , popełnienia 3595d10 , popełnienia f511bc0 , popełnienia f6041ab , popełnienia f46c243 , popełnienia 99c049b , popełnienia 3738439 , popełnienia 7717242 , popełnienia b8afb90 (20 grudnia 2019), autor: Denton Liu ( Denton-L) .
(Połączone przez Junio C Hamano - gitster- w commit 381e8e9 , 05 lutego 2020)
t1507: inline full_name()
Podpisano: Denton Liu
Wcześniej biegaliśmy test_must_fail full_name. Jednak test_must_failnależy go używać tylko w poleceniach git.
Wbudowany full_name(), abyśmy mogli bezpośrednio korzystać test_must_failz gitpolecenia.
Kiedy full_name()został wprowadzony w 28fb84382b ( „Wprowadzenie <branch>@{upstream}zapisu”, 2009-09-10, Git v1.7.0-RC0 - scalanie ), przy czym git -Copcja nie była dostępna jeszcze (ponieważ został wprowadzony w 44e1e4d67d (” git: prowadzony w danym katalogu z opcją -C, 2013-09-09, Git v1.8.5-rc0 - scalenie wymienione w partii nr 5 )).
W rezultacie funkcja pomocnika eliminuje potrzebę ręcznego za cdkażdym razem. Ponieważ jednak git -Cjest już dostępny, możemy go po prostu użyć zamiast tego full_name().