2012-06-10 15 views
13

git animals avuto questa serie di comandi:Qual è la differenza tra git add * e git add., Se ce ne sono?

git init 
git add * 
git commit -a -m ‘initial commit and release!’ 

Cosa fa git add * fare rispetto al git add . (che io normalmente fare) Sono le stesse?

+0

* di solito significa "Abbina tutto" e. significa "questa directory corrente", che per impostazione predefinita viene eseguita in modo ricorsivo. – TylerH4

+0

@ TylerH4: Ma se l'espansione di '*' include le directory, verranno aggiunte in modo ricorsivo da git in ogni caso. –

risposta

17

git add * aggiungerà tutti i percorsi che sono il risultato del shell espansione del * mentre git add . dirà git per aggiungere la directory corrente.

git add * non aggiungerà percorsi che iniziano con un . come l'espansione della shell di * considera questi percorsi "nascosti".

git add * fallirà anche se qualsiasi percorso ampliato è attualmente in fase ignorato da git, perché git considera un errore se si specifica esplicitamente un percorso ignorato senza passare il (forza) bandiera -f per dimostrare che davvero si vuole aggiungere un percorso ignorato .

Se si ottiene git per espandere il glob (git add '*') aggiungerà file "nascosti" e salterà i file ignorati. Funzionerebbe allo stesso modo di git add . in questo caso.

+0

* shell * indica l'applicazione della riga di comando o il sistema operativo? –

2

Per impostazione predefinita, il passaggio di una directory a git add aggiungerà in modo ricorsivo le sottodirectory e i file.

Il jolly * verrà espanso dalla shell come nomi di file sotto la directory corrente.

E lo sai, in Unix . si riferisce solo alla directory corrente, quindi questi due comandi sono equivalenti. Anche se * viene elaborato dalla shell e . viene elaborato da git, fanno la stessa cosa.

+3

Poiché '*' viene elaborato dalla shell, non prende in considerazione '.gitignore', mentre' .' fa. – wisbucky

Problemi correlati