2010-08-22 7 views
72

Was ist der Unterschied zwischen begehen:Git hinzufügen. vs git -a

  • git add .
  • git commit -a

Sollte ich beide tun, oder ist das überflüssig?

+2

siehe auch (nicht genau Duplikat, obwohl): http://StackOverflow.com/Questions/572549/Difference-of-Git-Add-a-and-Git-add –

Antwort

99

git commit -a bedeutet fast [*] das gleiche wie git add -u && git commit.

Es ist nicht dasselbe wie git add ., da dies nicht verfolgte Dateien hinzufügen würde, die nicht ignoriert werden. git add -u verschiebt nur Änderungen (einschließlich Löschungen) in bereits verfolgte Dateien.

[*] Es gibt einen kleinen Unterschied, wenn Sie nicht im Stammverzeichnis Ihres Repositorys sind. git add -u Updates auf Dateien im aktuellen Verzeichnis und darunter, entspricht git add -u ., während git commit -a Stufen und Commits ändert sich zu alle Tracking-Dateien.

+2

Die Das Verhalten in [*] ändert sich in git 2.0 aus Konsistenzgründen. – user1284631

+2

In welche Richtung? d. h. wird commit -a werden wie add -u, oder wird hinzufügen -u wird wie commit -a? –

+3

@MilesRout: 'git add -u' wird wie' git commit -a'; Du musst explizit 'git add -u.' sagen, wenn du das meinst. –

13

git commit -a ruft automatisch git add für alle Dateien auf, die es kennt. Sie können git add verwenden, um auszuwählen, welche Dateien übertragen werden sollen. Konsultieren Sie die Dokumentation für weitere Informationen: here

+8

* alle Dateien, von denen es weiß * ist sehr unklar zu mir, vor allem da diese angeblich nicht hinzugefügt wurden –

+0

@Nikana Reklawyks Sie haben die Definition von "add" falsch. Add bedeutet nicht dasselbe wie in svn. Es aktualisiert nur den Index. [Sorry für langsame Antwort, ich erinnere mich nicht daran, eine Benachrichtigung für diesen Kommentar zu erhalten] – alternative

+1

@alternative, Noch kann diese Antwort besser tun, wenn Sie eine Klarstellung für "alle Dateien, die es über" ..... – Pacerier