Начиная с git 1.8.5 (4 квартал 2013 года) , вы сможете «использовать команду Git, но без необходимости менять каталоги».
Точно так же, как « make -C <directory>», « git -C <directory> ...» говорит Git идти туда, прежде чем делать что-либо еще .
Смотрите коммит 44e1e4 от Назри Рамлия :
Требуется больше нажатий клавиш для вызова команды Git в другом каталоге, не выходя из текущего каталога:
(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
Описанные выше методы приемлемы для сценариев, но слишком громоздки для быстрых вызовов командной строки.
С помощью этой новой опции, вышеупомянутое может быть сделано с меньшим количеством нажатий клавиш:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Так как Git 2.3.4 (март 2015 г.), а также совершать 6a536e2 по Karthik Наяка ( KarthikNayak) , gitбудет относиться к « git -C '<path>'» как не-оп , когда <path>пусто.
' git -C ""' бесполезно умирает с ошибкой " Cannot change to ''', в то время как оболочка рассматривает cd" "" как бездействие.
Принимая поведение оболочки в качестве прецедента, научите gitобращаться с -C "" 'также как с запретом.
4 года спустя Git 2.23 (Q3 2019) документирует, что ' git -C ""' работает и не меняет каталог
Он ведет себя так с 6a536e2 ( git: обрабатывать " git -C '<path>'" как запрет, когда <path>пусто, 2015-03-06, Git v2.3.4).
Это означает, что документация теперь (наконец) включает в себя:
Если ' <path>' присутствует, но пусто, например -C "", то текущий рабочий каталог остается без изменений.
В git -Cкачестве примера вы можете увидеть использование с Git 2.26 (Q1 2020).
См. Коммит b441717 , коммит 9291e63 , коммит 5236fce , коммит 10812c2 , коммит 62d58cd , коммит b87b02c , коммит 9b92070 , коммит 3595d10 , коммит f511bc0 , коммит f6041ab , коммит f46c243 , коммит 99c049b , коммит 3738439 , коммит 7717249 , коммит 20af8, дек 8 от Denton Лю ( Denton-L) .
(Слиты Junio C Hamano - gitster- в фиксации 381e8e9 , 05 Feb 2020)
t1507: в линию full_name()
Подписано: Дентон Лю
Раньше мы бегали test_must_fail full_name. Тем не менее, test_must_failследует использовать только для команд git.
Встроенный, full_name()так что мы можем использовать test_must_failпо gitкоманде напрямую.
Когда эта функцияfull_name() была введена в 28fb84382b («Ввести <branch>@{upstream}нотацию», 2009-09-10, Git v1.7.0-rc0 - merge ), эта git -Cопция еще не была доступна (поскольку она была введена в 44e1e4d67d (" git: запустить в заданном каталоге). с опцией -C ", 2013-09-09, Git v1.8.5-rc0 - объединение, указанное в пакете № 5 )).
В результате вспомогательная функция устраняет необходимость cdкаждый раз вручную . Тем не менее, поскольку git -Cэто доступно сейчас, мы можем просто использовать это вместо и встроенный full_name().