A partire da git 1.8.5 (Q4 2013) , sarai in grado di "usare un comando Git, ma senza cambiare directory".
Proprio come " make -C <directory>
", " git -C <directory> ...
" dice a Git di andarci prima di fare qualsiasi altra cosa .
Vedi commit 44e1e4 di Nazri Ramliy :
Sono necessari più tasti per richiamare il comando Git in una directory diversa senza uscire dalla directory corrente:
(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
I metodi sopra indicati sono accettabili per gli script ma sono troppo ingombranti per invocazioni rapide da riga di comando.
Con questa nuova opzione, quanto sopra può essere fatto con un minor numero di tasti:
git -C ~/foo status
git -C ../.. grep foo
for d in d1 d2 d3; do git -C $d svn rebase; done
Da Git 2.3.4 (marzo 2015), e commettere 6a536e2 da Karthik Nayak ( KarthikNayak
) , git
tratteranno " git -C '<path>'
" come no-op quando <path>
è vuoto.
' git -C ""
' muore inutilmente con errore " Cannot change to ''
", mentre la shell tratta cd "" 'come no-op.
Prendendo il comportamento della shell come un precedente, insegna anche git
a trattare -C "" 'come no-op.
4 anni dopo, Git 2.23 (Q3 2019) documenta che ' git -C ""
' funziona e non cambia directory
Si sta comportando così da 6a536e2 ( git
: tratta " git -C '<path>'
" come no-op quando <path>
è vuoto, 2015-03-06, Git v2.3.4).
Ciò significa che la documentazione ora (finalmente) include:
Se ' <path>
' è presente ma vuoto, ad es. -C ""
, L'attuale directory di lavoro rimane invariata.
Puoi vedere git -C
usato con Git 2.26 (Q1 2020), come esempio.
Vedi 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 , 208 2019 di Denton Liu ( Denton-L
) .
(Unita da Junio C Hamano - gitster
- in commit 381e8e9 , 05 feb 2020)
t1507
: in linea full_name()
Firmato-fuori-da: Denton Liu
Prima stavamo correndo test_must_fail full_name
. Tuttavia, test_must_fail
dovrebbe essere usato solo sui comandi git.
In linea in full_name()
modo che possiamo utilizzare direttamente test_must_fail
il git
comando.
Quando è full_name()
stato introdotto in 28fb84382b ("Introduce <branch>@{upstream}
notation", 10/09/2009, Git v1.7.0-rc0 - merge ), l' git -C
opzione non era ancora disponibile (poiché è stata introdotta in 44e1e4d67d (" git
: esegui in una directory indicata con l'opzione -C ", 2013-09-09, Git v1.8.5-rc0 - unione elencata nel lotto n. 5 )).
Di conseguenza, la funzione di supporto ha rimosso la necessità di eseguire manualmente cd
ogni volta. Tuttavia, poiché git -C
è disponibile ora, possiamo semplicemente usarlo invece e in linea full_name()
.