2010-05-03 6 views
30

Ich bin ein bisschen neu zu Git, und ich verstehe nicht, warum git commit -a nur geänderte und gelöschte Dateien, aber keine neuen Dateien.Warum nicht git commit -a neue Dateien hinzufügen?

Kann jemand erklären, warum es so ist, und warum gibt es kein anderes Commit-Flag zum Aktivieren von Dateien und Commit in one command?

BTW, fügt hg commit -A sowohl neue und gelöschte Dateien auf die commit

+1

Sie möchten vielleicht fragen, warum es auf der git Liste . Dies könnte ein nützliches Feature sein, wenn jemand sich darum kümmert, es hinzuzufügen. – xenoterracide

+0

Ich denke thet gibt es nicht 'git commit -A, weil 1.) das Hinzufügen neuer Dateien ist relativ ungewöhnlich; auch die meisten anderen VCS erfordern explizite 'scm add ' Schritt 2.) '.gitignore' und ähnliche Dateien sind nicht perfekt, was dazu führen könnte, dass unerwünschte Dateien zum Commit hinzugefügt werden. –

+0

Dies sollte definitiv das Standardverhalten "-a" sein – juliangonzalez

Antwort

17

Git ist über Tracking ändert. Es verlässt sich darauf, dass Sie ihm sagen, welche Dateien wichtig genug für die Nachverfolgung sind. Sie können die gewünschte wie so beeinflussen erreichen:

git add . ;git commit -a 

Stellen Sie sicher, Ihre .gitignore Datei aktualisiert wird.

+0

Ja. Auf diese Weise können Sie verschiedene Dateien behalten, die nicht im Repository gespeichert werden sollen, und nur das hinzufügen, was Sie sicher verfolgen möchten. – Kzqai

+1

Die Option -a ist redundant, wenn sie im Stammverzeichnis des Repositorys ausgeführt wird. im Grunde benötigt der Fragesteller – xenoterracide

+3

Nein, '-a' ist nicht redundant. Es stellt sicher, dass Löschungen auch inszeniert werden. –

6

Kelly ist korrekt, aber ich denke, ein weiterer Faktor ist, dass so viele Leute dieses Verhalten erwarten, weil CVS, Subversion und die meisten anderen Tools es so machen.

Wenn Git neue Dateien festgeschrieben hat, stellen Sie möglicherweise fest, dass Sie vor langer Zeit .o Dateien festgeschrieben haben und noch schlimmer, sie könnten den Build beschädigen.

+1

Ich möchte nicht, dass es der Standard ist, aber ich möchte, dass ich es mache. Ich kann git add. Machen, also warum erlaubst du es mir nicht, es als Teil des git commit-Befehls zu tun? – splintor

9

schlage ich eine andere Lösung: git commit --interactive -m "your commit message" verwendet, wird zeigen Sie dieses Menü

*** Commands *** 
    1: [s]tatus  2: [u]pdate  3: [r]evert  4: [a]dd untracked 
    5: [p]atch  6: [d]iff 7: [q]uit 8: [h]elp 

so dass Sie den Status überprüfen, fügen Sie untracked Dateien und so auf einfachen Tastenanschläge verwenden.

6

Ich vermute, die Antwort ist einfach (aber ich bezweifle, dass ich beliebt sein werde, um es zu sagen!) - es gibt wahrscheinlich keine absichtlichen "warum" zu diesem, außer es ist, wie es fiel, wenn die Entwickler es implementiert. Die Priorität des Git-Projekts war nie die Benutzerfreundlichkeit oder Benutzerfreundlichkeit.