Git Commit-Befehl erklärt

Der git commitBefehl speichert alle bereitgestellten Änderungen zusammen mit einer kurzen Beschreibung des Benutzers in einem "Commit" für das lokale Repository.

Commits stehen im Mittelpunkt der Git-Nutzung. Sie können sich ein Commit als Momentaufnahme Ihres Projekts vorstellen, in dem eine neue Version dieses Projekts im aktuellen Repository erstellt wird. Zwei wichtige Merkmale von Commits sind:

  • Sie können die festgeschriebenen Änderungen zu einem späteren Zeitpunkt abrufen oder das Projekt auf diese Version zurücksetzen (siehe Git-Checkout).
  • Wenn mehrere Commits unterschiedliche Teile des Projekts bearbeiten, überschreiben sie sich nicht gegenseitig, selbst wenn die Autoren des Commits sich nicht bewusst waren. Dies ist einer der Vorteile der Verwendung von Git gegenüber einem Tool wie Dropbox oder Google Drive.

Optionen

Es gibt eine Reihe von Optionen, die Sie einschließen können git commit. In diesem Handbuch werden jedoch nur die beiden häufigsten Optionen behandelt. Eine ausführliche Liste der Optionen finden Sie in der Git-Dokumentation.

Die Option -m

Die am häufigsten verwendete Option git commitist die -mOption. Das -msteht für Nachricht. Beim Anruf git commitmuss eine Nachricht enthalten sein. Die Nachricht sollte eine kurze Beschreibung der festgeschriebenen Änderungen sein. Die Nachricht sollte sich am Ende des Befehls befinden und in Anführungszeichen gesetzt werden " ".

Ein Beispiel für die Verwendung der -mOption:

git commit -m "My message"

Die Ausgabe in Ihrem Terminal sollte ungefähr so ​​aussehen:

[master 13vc6b2] My message 1 file changed, 1 insertion(+)

HINWEIS: Wenn das-mnicht imgit commitBefehl enthalten ist, werden Sie aufgefordert, eine Nachricht in Ihrem Standardtexteditor hinzuzufügen - siehe "Verwenden detaillierter Festschreibungsnachrichten" weiter unten.

Die Option -a

Eine weitere beliebte Option ist die -aOption. Das -asteht für alle. Diese Option stellt automatisch alle geänderten Dateien bereit, die festgeschrieben werden sollen. Wenn neue Dateien hinzugefügt -awerden, werden diese neuen Dateien durch die Option nicht bereitgestellt. Es werden nur Dateien festgeschrieben, die dem Git-Repository bekannt sind.

Zum Beispiel:

Angenommen, Sie haben eine README.mdDatei, die bereits in Ihr Repository übernommen wurde. Wenn Sie Änderungen an dieser Datei vornehmen, können Sie die -aOption in Ihrem Commit-Befehl verwenden, um die Änderungen in Ihr Repository aufzunehmen und hinzuzufügen. Was ist jedoch, wenn Sie auch eine neue Datei mit dem Namen hinzugefügt haben index.html? Die -aOption wird das nicht bereitstellen, index.htmlda es derzeit nicht im Repository vorhanden ist. Wenn neue Dateien hinzugefügt wurden, sollte der git addBefehl aufgerufen werden, um die Dateien bereitzustellen, bevor sie in das Repository übernommen werden können.

Ein Beispiel für die Verwendung der -aOption:

git commit -am “My new changes”

Die Ausgabe in Ihrem Terminal sollte ungefähr so ​​aussehen:

[master 22gc8v1] My new message 1 file changed, 1 insertion(+)

Verwenden detaillierter Festschreibungsnachrichten

Obwohl dies git commit -m "commit message"einwandfrei funktioniert, kann es nützlich sein, detailliertere und systematischere Informationen bereitzustellen.

Wenn Sie ein Commit durchführen, ohne die -mOption zu verwenden, öffnet git Ihren Standardtexteditor mit einer neuen Datei, die eine auskommentierte Liste aller Dateien / Änderungen enthält, die im Commit bereitgestellt werden. Anschließend schreiben Sie Ihre detaillierte Festschreibungsnachricht (die erste Zeile wird als Betreffzeile behandelt) und die Festschreibung wird ausgeführt, wenn Sie die Datei speichern / schließen.

Denken Sie daran:

  • Halten Sie die Länge Ihrer Commit-Nachrichtenzeilen standardmäßig unter 72 Zeichen
  • Es ist vollkommen in Ordnung - und sogar empfohlen -, mehrzeilige Festschreibungsnachrichten zu schreiben
  • Sie können auch auf andere Probleme verweisen oder Anforderungen in Ihrer Festschreibungsnachricht abrufen. GitHub hat allen Pull-Anforderungen und -Problemen eine Nummernreferenz zugewiesen. Wenn Sie beispielsweise auf Pull-Anforderung Nr. 788 verweisen möchten, tun Sie dies einfach entweder in der Betreffzeile oder im Textkörper

Die Option zum Ändern

Mit dieser --amendOption können Sie Ihr letztes Commit ändern. Angenommen, Sie haben gerade ein Commit durchgeführt und einen Fehler in Ihrer Commit-Protokollnachricht gemacht. Sie können das letzte Commit bequem mit dem folgenden Befehl ändern:

git commit --amend -m "an updated commit message"

Wenn Sie vergessen haben, eine Datei in das Commit aufzunehmen:

git add FORGOTTEN-FILE-NAME git commit --amend -m "an updated commit message" # If you don't need to change the commit message, use the --no-edit option git add FORGOTTEN-FILE-NAME git commit --amend --no-edit

Vorzeitige Commits treten im Laufe Ihrer täglichen Entwicklung immer wieder auf. Es ist leicht zu vergessen, eine Datei zu inszenieren oder Ihre Commit-Nachricht richtig zu formatieren. Die --amendFlagge ist eine bequeme Möglichkeit, diese kleinen Fehler zu beheben. Dieser Befehl ersetzt die alte Festschreibungsnachricht durch die im Befehl angegebene aktualisierte.

Geänderte Commits sind eigentlich völlig neue Commits und das vorherige Commit befindet sich nicht mehr in Ihrem aktuellen Zweig. Wenn Sie mit anderen zusammenarbeiten, sollten Sie versuchen, das Ändern von Commits zu vermeiden, wenn das letzte Commit bereits in das Repository verschoben wurde.

Mit --amendeinem der nützlichen Flags, das Sie verwenden können --author, können Sie den Autor des zuletzt vorgenommenen Commits ändern. Stellen Sie sich eine Situation vor, in der Sie Ihren Namen oder Ihre E-Mail-Adresse in Git-Konfigurationen nicht richtig eingerichtet haben, aber bereits ein Commit durchgeführt haben. Mit --authorflag können Sie sie einfach ändern, ohne das letzte Commit zurückzusetzen.

git commit --amend --author="John Doe "

Die Option -v oder -verbose

The -v or --verbose option is used without the -m option. The -v option can be useful when you wish to edit a Git commit message in your default editor while being able to see the changes you made for the commit. The command opens your default text editor with a commit message template as well as a copy of the changes you made for this commit. The changes, or diff, will not be included in the commit message, but they provide a nice way to reference your changes when you’re describing them in your commit message.

How to squash multiple commits into one

This is an awesome feature of rebase that can be used in the interactive mode. To squash the last n commits into one, run the following command:

git rebase -i HEAD~n

That will open up a text-editor with something similar to the following:

pick commit_1 pick commit_2 pick commit_3 ... pick commit_n # Bunch of comments

Leave the first commit alone, and change the rest of the picks to squash. Save and exit the editor.

So if you wanted to squash the last three commits, you’ll first run git rebase -i HEAD~3 and then you’ll want to edit your commits to look something like this:

pick dd661ba Commit 1 squash 71f5fee Commit 2 squash f4b4bf1 Commit 3

If you’ve already pushed to a remote before squashing your commits, you’ll have to push to the remote again, with the -f flag, otherwise git will throw an error at you.

It is strongly suggested that you read the information in the opened file as there are many things you can do.

More Information:

  • Git documentation: commit