git commit -m vs. git commit -am

78

Scheint einfach, aber ich verstehe es einfach nicht. Ich bin im Stammverzeichnis meiner Bewerbung.

Hier ist mein Workflow.

git add .
git commit -m "added a new feature some files changed"
git push heroku master

Dies funktioniert normalerweise. Alle meine Änderungen werden gepusht.

Aber manchmal habe ich eine Datei, die ich ändere, aber wenn ich zu Heroku drücke, sind die Änderungen nicht für DIESE DATEI da ... aber für die meisten Dateien sind die Änderungen da ...

Aber wenn ich es mache

git add .
git commit -am "added a new feature some files changed"
git push heroku master

Alles (alle Änderungen) wird an Heroku weitergeleitet

slindsey3000
quelle
Können Sie Beispiele geben, welche Datei nicht abgefangen wird? Ist es eine Datei, die Sie gelöscht haben? Manchmal muss man etwas tun git add . --update, um diese zu fangen.
Helion3
@BotskoNet - Die Datei ist eine CSS-Datei in meiner Rails-Anwendung. Aus irgendeinem Grund werden die Änderungen beim Bearbeiten dieser Datei nicht an Heroku übertragen. Das ist schon mal passiert und ich verstehe einfach nicht warum.
Slindsey3000
Vielleicht hilft dir das. [Unterschiedlich zwischen diesen] [1] [1]: stackoverflow.com/a/15419846/3962576
Reven

Antworten:

83

Aus den Dokumenten :

git commit -a stellt automatisch alle nachverfolgten, geänderten Dateien vor dem Commit bereit. Wenn Sie der Meinung sind, dass die git add-Phase des Workflows zu umständlich ist, können Sie diesen Teil mit der Option -a überspringen. Dies weist Git grundsätzlich an, git add für jede Datei auszuführen, die "verfolgt" wird - dh für jede Datei, die sich in Ihrem letzten Commit befand und geändert wurde. Auf diese Weise können Sie bei Bedarf einen Workflow im Subversion-Stil ausführen, indem Sie einfach Dateien bearbeiten und dann git commit -a ausführen, wenn Sie einen Snapshot aller Änderungen erstellen möchten. Sie müssen jedoch git add ausführen, um neue Dateien zu verfolgen, genau wie bei Subversion.

Mit der Option -amkönnen Sie in einem Befehl eine Nachricht für das Commit hinzufügen und erstellen.

Davin Tryon
quelle
2
Also warum funktioniert git commit -am "x"... aber ... git add . git commit -m "x"funktioniert nicht?
Slindsey3000
13
Weil einige Ihrer Dateien nicht bereitgestellt werden. Dies tritt bei gelöschten / hinzugefügten Dateien auf, die derzeit nicht verfolgt werden. Normalerweise müssen Sie eine git add -uausführen, um "nicht verfolgte" Dateien bereitzustellen. -amwird dies auch für Sie tun.
Davin Tryon
3
@ slindsey3000 Möglicherweise suchen Sie nach git add -A, das mit git add identisch ist --all, das sich von git add unterscheidet.
Alexander Mills
19

Ich würde vorschlagen, wenn Sie nur eine Datei ändern, könnten Sie Folgendes tun:

git add "Your_file.txt"
git commit -m "added a new feature in a file"
git push heroku master

Oder wenn Sie mehrere Dateien geändert haben, können Sie Folgendes tun:

git add .
git commit -m "some files changed"
git push heroku master

Ebenso können Sie mit diesem Befehl alle Dateien in einer Zeile hinzufügen und festschreiben:

git commit -am "added a new feature some files changed"
git push heroku master
Juyal Jee
quelle
5
git commit -amdrückt nicht, so dass Sie die drei genannten Zeilen nicht ersetzen können.
WilomGfx
3
@ WilomGfx Ich denke nein. Was er sagt ist: Sie könnten hinzufügen und begehen, nicht pushen;
Also hat