2012-06-10 11 views
13

git animals hatte diese Serie von Befehlen:Was ist der Unterschied zwischen git add * und git add., Falls vorhanden?

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

Was git add * zu tun hat im Vergleich zu git add . (was ich normalerweise tun) sie gleich sind?

+0

* bedeutet normalerweise "Match Everything" und. bedeutet "dieses aktuelle Verzeichnis", das standardmäßig rekursiv ausgeführt wird. – TylerH4

+0

@ TylerH4: Aber wenn die Erweiterung von '*' Verzeichnisse enthält, werden sie in jedem Fall rekursiv von git hinzugefügt. –

Antwort

17

git add * fügt alle Wege, die das Ergebnis der Schale Expansion der * während git add . wird zeigen git sind das aktuelle Verzeichnis hinzuzufügen.

git add * fügt keine Pfade hinzu, die mit . beginnen, da die Shell-Erweiterung * diese als "versteckte" Pfade betrachtet.

git add * scheitern wird auch, wenn eine erweiterte Pfad derzeit von git ignoriert wird, weil git es einen Fehler hält, wenn Sie explizit einen ignoriert Pfad geben Sie die -f (Kraft) Flagge ohne Übergabe eines ignoriert Weg zu zeigen, dass Sie wirklich hinzufügen möchten .

Wenn Sie git erhalten, um den Glob zu erweitern (git add '*'), wird es "versteckte" Dateien hinzufügen und ignorierte Dateien überspringen. Es würde in diesem Fall genauso funktionieren wie git add ..

+0

Bedeutet * shell * hier die Befehlszeilenanwendung oder das Betriebssystem? –

2

Standardmäßig wird bei der Übergabe eines Verzeichnisses an git add die Unterverzeichnisse und Dateien rekursiv hinzugefügt.

Der Platzhalter * wird durch Ihre Shell als Dateiname unter dem aktuellen Verzeichnis erweitert.

Und Sie wissen, in Unix . bezieht sich nur auf das aktuelle Verzeichnis, so dass diese beiden Befehle gleichwertig sind. Obwohl * von der Shell verarbeitet wird und . von Git verarbeitet wird, tun sie das Gleiche.

+3

Da '*' von der Shell verarbeitet wird, wird '.gitignore' nicht berücksichtigt, während' .' – wisbucky

Verwandte Themen