2015-07-28 14 views
5

während in git add Befehl verwende ich . und * alle Dateien im Arbeitsverzeichnis hinzuzufügen.Was ist der Unterschied zwischen. und * in "git add"?

Was ist der Unterschied zwischen ihnen?

+2

Wenn Sie wirklich den Unterschied sehen möchten, ohne etwas zu ändern, versuchen Sie 'git add -nv', um einen Trockenlauf mit der ausführlichen Option ON durchzuführen. – legends2k

Antwort

6

Beides sind git Konzepte:

. ist eine Darstellung des aktuellen Arbeitsverzeichnis. Also, wenn Sie sagen, zum Beispiel, git add ., meinst du wirklich „git Sie bitte das aktuelle Arbeitsverzeichnis in dem Staging-Bereich für meine aktuelle Änderung hinzufügen“. Die meisten anderen Befehle behandeln . die gleiche Art und Weise: cd . Sie nirgendwo bewegen.

*, ist andererseits ein shell glob. Dieser bestimmte Globus wird zu "allen Dateien" erweitert. Wenn Sie also git add * sagen, was zuerst passiert, ist, dass Ihre Shell (das Programm, in das Sie Befehle eingeben) es auf jede Datei und jedes Verzeichnis an Ihrem aktuellen Speicherort erweitert, dann gitdie Liste erhält. So sieht der git Befehl überhaupt nicht die * - es sieht nur, dass Sie add alles in Ihrem aktuellen Arbeitsverzeichnis wollten.

Der Nettoeffekt ist im Grunde der gleiche: alles im Arbeitsverzeichnis wird hinzugefügt. Die Art und Weise, wie es passiert, ist jedoch völlig anders. git add . ist wahrscheinlich das, was Sie tun wollte - was es tut, unter der Haube näher an Ihre Absicht ist.

+0

mit „git add \ *“ könnte führt zu einem Problem, wenn Sie eine große Anzahl von Dateien. Es kann passieren, dass "\ *" in einer sehr großen Zeichenfolge ausgegeben wird und die Länge dieser Zeichenfolge den Shell-Puffer für Befehle überschreiten kann. Daher wird der Befehl möglicherweise abgeschnitten (höchstwahrscheinlich wird ein Dateiname abgeschnitten). Daher kann der Befehl fehlschlagen, wenn Sie "*" verwenden. –

Verwandte Themen