A partir de git 1.8.5 (cuarto trimestre de 2013) , podrá "utilizar un comando Git, pero sin tener que cambiar los directorios".
Al igual que " make -C <directory>", " git -C <directory> ..." le dice a Git que vaya allí antes de hacer cualquier otra cosa .
Ver commit 44e1e4 de Nazri Ramliy :
Se requieren más pulsaciones de teclas para invocar el comando Git en un directorio diferente sin salir del directorio actual:
(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
Los métodos que se muestran arriba son aceptables para las secuencias de comandos, pero son demasiado engorrosos para invocaciones rápidas de la línea de comandos.
Con esta nueva opción, lo anterior se puede hacer con menos pulsaciones de teclas:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Desde Git 2.3.4 (marzo de 2015), y cometer 6a536e2 por Karthik Nayak ( KarthikNayak) , gittratará " git -C '<path>'" como un no-op cuando <path>esté vacío.
' git -C ""' muere inútilmente con el error " Cannot change to ''", mientras que el shell trata el cd "" 'como un no-op.
Tomando el comportamiento del shell como un precedente, enseñe gita tratar a -C "" 'como un no-op, también.
4 años después, Git 2.23 (Q3 2019) documenta que ' git -C ""' funciona y no cambia el directorio
Se ha comportado así desde 6a536e2 ( git: trata " git -C '<path>'" como un no-op cuando <path>está vacío, 2015-03-06, Git v2.3.4).
Eso significa que la documentación ahora (finalmente) incluye:
Si ' <path>' está presente pero vacío, por ejemplo -C "", el directorio de trabajo actual no se modifica.
Puede ver git -Cusado con Git 2.26 (Q1 2020), como un ejemplo.
Ver 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 7717242 , commit 208b ) por Denton Liu ( Denton-L) .
(Fusión por Junio C Hamano - gitster- en commit 381e8e9 , 05 de febrero de 2020)
t1507: en línea full_name()
Firmado por: Denton Liu
Antes estábamos corriendo test_must_fail full_name. Sin embargo, test_must_failsolo debe usarse en comandos git.
En línea full_name()para que podamos usar test_must_failel gitcomando directamente.
Cuando full_name()se introdujo en 28fb84382b ("Introducir <branch>@{upstream}notación", 10/09/2009, Git v1.7.0-rc0 - fusionar ), la git -Copción aún no estaba disponible (ya que se introdujo en 44e1e4d67d (" git: ejecutar en un directorio dado con la opción -C ", 09/09/2013, Git v1.8.5-rc0 - fusión listada en lote # 5 )).
Como resultado, la función auxiliar eliminó la necesidad de hacerlo manualmente cdcada vez. Sin embargo, dado que git -Cestá disponible ahora, podemos usar eso en su lugar y en línea full_name().