So schreiben Sie gute Commit-Nachrichten: Ein praktischer Git-Leitfaden

Um einen nützlichen Revisionsverlauf zu erstellen, sollten sich die Teams zunächst auf eine zu verwendende Commit-Message-Konvention einigen. Dies gilt auch für persönliche Projekte.

Kürzlich habe ich auf Hashnode gefragt: "Welche Commit-Message-Konvention verwenden Sie bei der Arbeit?" und ich erhielt einige erstaunliche Antworten von Benutzern, die die Konventionen erklärten, die sie bei der Arbeit und für ihre persönlichen Projekte verwenden.

Welche Commit-Message-Konvention verwenden Sie bei der Arbeit?

von @hashnode //t.co/HewCBxRCbr

- BOLAJI @ (@iambolajiayo), 25. November 2019

In diesem Artikel werde ich erläutern, wie Sie gute Commit-Nachrichten schreiben und warum Sie dies tun sollten.

PS: Dieser Artikel wurde zuerst in meinem Blog hier veröffentlicht.

Einführung in die Versionskontrolle mit Git

Versionskontrollsoftware ist ein wesentlicher Bestandteil der modernen Praktiken von Softwareentwicklern.

Git ist bei weitem das am weitesten verbreitete Versionskontrollsystem der Welt. Es ist ein verteiltes und aktiv gepflegtes Open-Source-Projekt, das ursprünglich 2005 von Linus Torvalds, dem berühmten Schöpfer des Linux-Betriebssystemkerns, entwickelt wurde.

Neu bei Git? Schauen Sie sich den offiziellen Leitfaden für die ersten Schritte oder diese Folie aus einem früheren Vortrag an, den ich gehalten habe.

Was ist eine Commit-Nachricht?

Der Befehl commit wird verwendet, um Änderungen in einem lokalen Repository nach dem Staging in Git zu speichern. Bevor Sie jedoch Änderungen in Git speichern können, müssen Sie Git mitteilen, welche Änderungen Sie speichern möchten, da Sie möglicherweise unzählige Änderungen vorgenommen haben. Eine gute Möglichkeit, dies zu tun, besteht darin, eine Festschreibungsnachricht hinzuzufügen , um Ihre Änderungen zu identifizieren.

Optionen festschreiben

  • -m

Diese Option legt die Nachricht des Commits fest.

git add static/admin/config.yml git commit -m "Setup multiple roles for netlify-cms git gateway" 
  • -a oder --all

Diese Option schreibt automatisch alle (einschließlich neuer) nachverfolgten, geänderten oder gelöschten Dateien fest.

git commit -a -m "Add a new role for netlify-cms git gateway" 
  • --ändern

Diese Option schreibt das allerletzte Commit mit aktuell bereitgestellten Änderungen oder einer neuen Commit-Nachricht neu und sollte nur für Commits ausgeführt werden, die noch nicht in ein Remote-Repository übertragen wurden.

git add . git commit --amend -m "Update roles for netlify-cms git gateway" 

Warum sollten Sie gute Commit-Nachrichten schreiben?

Man könnte sagen: "Es ist nur ein persönliches Projekt." Ja, Sie arbeiten jetzt alleine, aber was passiert, wenn Sie mit einem Team arbeiten oder zu Open Source beitragen?

Eine gut gestaltete Git-Commit-Nachricht ist der beste Weg, um anderen Entwicklern, die an diesem Projekt arbeiten, und Ihrem zukünftigen Selbst den Kontext über eine Änderung mitzuteilen.

Haben Sie jemals versucht, git logeines Ihrer alten Projekte auszuführen, um die "seltsamen" Festschreibungsnachrichten zu sehen, die Sie seit ihrer Einführung verwendet haben? Es kann schwer zu verstehen sein, warum Sie in der Vergangenheit einige Änderungen vorgenommen haben, und Sie möchten, dass Sie diesen Artikel früher lesen :).

Commit-Nachrichten können angemessen kommunizieren, warum eine Änderung vorgenommen wurde, und ein Verständnis, das die Entwicklung und Zusammenarbeit effizienter macht.

So schreiben Sie Commit-Nachrichten mit Git

Bisher habe ich git commit -m "Fix X to allow Y to use Z"meine persönlichen Projekte nur mit einem Thema und ohne zusätzliche Beschreibung verwendet. Dies ist ideal für kleine und übersichtliche Korrekturen wie git commit -m "Fix typo in README.md, aber bei umfangreicheren Änderungen müssten Sie einige zusätzliche Details hinzufügen.

Editor-Methode

Wenn Sie git commiteine Nachricht oder Option ausführen, wird Ihr Standardtexteditor geöffnet, um eine Festschreibungsnachricht zu schreiben.

So konfigurieren Sie Ihren "Standard" -Editor:

git config --global core.editor nano 

Dies würde Git so konfigurieren, dass Nano als Standardeditor verwendet wird. Ersetzen Sie "Nano" durch "Emacs", "Vim" oder was auch immer Sie bevorzugen.

Im geöffneten Editor ist die erste Zeile das Thema (kurze Beschreibung), lassen Sie danach eine leere Zeile und alles andere ist die erweiterte Beschreibung (Text).

Befehlszeilenmethode

git commit -m "Subject" -m "Description..." 

Die erste -mOption ist das Thema (kurze Beschreibung) und die nächste ist die erweiterte Beschreibung (Text).

Wie schreibe ich gute Commit-Nachrichten?

Es gibt verschiedene Konventionen, die von verschiedenen Teams und Entwicklern verwendet werden, um gute Commit-Nachrichten zu schreiben. Ich werde nur einige allgemeine Regeln und Tipps zum Schreiben von Commit-Nachrichten skizzieren - Sie müssen entscheiden, welcher Konvention Sie folgen möchten. Und wenn Sie für ein Unternehmen arbeiten oder zu Open Source beitragen, müssen Sie sich an deren Konvention anpassen :).

Aus Gründen der Konsistenz können Sie eine Konvention für die Arbeit und eine andere für persönliche Projekte verwenden, da Sie möglicherweise irgendwann den Job wechseln und sich auch die Konvention ändern kann.

Schauen Sie sich diesen Thread an, um einige erstaunliche Konventionen für Commit-Nachrichten zu erhalten, oder fügen Sie Ihre hinzu, um jemandem bei der Entscheidung zu helfen.

Hier ist eine großartige Vorlage für eine gute Commit-Nachricht, die ursprünglich von Tim Pope geschrieben wurde

Capitalized, short (50 chars or less) summary More detailed explanatory text, if necessary. Wrap it to about 72 characters or so. In some contexts, the first line is treated as the subject of an email and the rest of the text as the body. The blank line separating the summary from the body is critical (unless you omit the body entirely); tools like rebase can get confused if you run the two together. Write your commit message in the imperative: "Fix bug" and not "Fixed bug" or "Fixes bug." This convention matches up with commit messages generated by commands like git merge and git revert. Further paragraphs come after blank lines. - Bullet points are okay, too - Typically a hyphen or asterisk is used for the bullet, followed by a single space, with blank lines in between, but conventions vary here - Use a hanging indent If you use an issue tracker, add a reference(s) to them at the bottom, like so: Resolves: #123 

Sieht gut aus, oder? So können Sie auch Ihre großartig machen:

  1. Geben Sie die Art des Commits an:
  • feat: Die neue Funktion, die Sie einer bestimmten Anwendung hinzufügen
  • fix: A bug fix
  • style: Feature and updates related to styling
  • refactor: Refactoring a specific section of the codebase
  • test: Everything related to testing
  • docs: Everything related to documentation
  • chore: Regular code maintenance.[ You can also use emojis to represent commit types]
  1. Separate the subject from the body with a blank line
  2. Your commit message should not contain any whitespace errors
  3. Remove unnecessary punctuation marks
  4. Do not end the subject line with a period
  5. Capitalize the subject line and each paragraph
  6. Use the imperative mood in the subject line
  7. Use the body to explain what changes you have made and why you made them.
  8. Do not assume the reviewer understands what the original problem was, ensure you add it.
  9. Do not think your code is self-explanatory
  10. Follow the commit convention defined by your team

Conclusion

The most important part of a commit message is that it should be clear and meaningful. In the long run, writing good commit messages shows how much of a collaborator you are. The benefits of writing good commit messages are not only limited to your team, but indeed expand to yourself and future contributors.

Want to learn more about Git and become a professional "version controller"? Check out these excellent resources:

  • //try.github.io/
  • //git-scm.com/book/en/v2
  • //www.git-tower.com/learn/
  • //learngitbranching.js.org/
  • //github.com/commitizen/cz-cli