Was ist das empfohlene Format für die Commit-Nachrichten von git (COMMIT_EDITMSG), falls vorhanden?git commit - Format?
Antwort
Es variiert natürlich, aber ein sehr gängiges Format ist so etwas wie diese (von http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html genommen, dass ich denke, bringt es wirklich gut auf):
Short (50 chars or less) summary of changes
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.
Further paragraphs come after blank lines.
- Bullet points are okay, too
- Typically a hyphen or asterisk is used for the bullet, preceded by a
single space, with blank lines in between, but conventions vary here
Eine Sache, es geht nicht auf etwas Ich habe mich für mich selbst entschieden, nämlich mit kurzen Tags am Anfang der ersten Zeile, um zu identifizieren, welche Art von Commit es ist. Das könnten Tags wie [fix]
für einen Bugfix, [new]
für ein neues Feature oder [dev]
für ein Commit sein, das nur Interna betrifft. Mit einer solchen Policy ist es einfach, ein Changelog automatisch aus den Commits zu generieren.
Edit: Hier ist eine andere gute Zusammenfassung, von dieser Seite auch: In git, what are some good conventions to format multiple comments to a single commit
ich nicht große Nachrichten empfehlen würde. Wenn Sie nicht in einem Satz erklären können, was Sie tun, umfasst Ihr Commit zu viel Veränderung. Verwenden Sie git rebase -i und teilen Sie Ihre Festschreibung auf, wenn Sie bereits festgeschrieben haben. Wenn Sie die Änderungen noch nicht übernommen haben, verwenden Sie git add -p, um in kleinen Teilen zu staffeln und dann als kleinere Commits zu committen.
Ein granularer Änderungsverlauf wie dieser hilft bei späteren Zusammenführungen und Rückständen. Es wird Ihnen auch helfen, sich mit Ihrem Issue Tracker zu verbinden. Wenn Sie zwei oder mehr Tickets adressiert haben, wird es schwieriger zu entschlüsseln, welches Ticket bei jeder Änderung des Commits adressiert wurde.
Nichttriviale Änderungen erfordern oft eine substantielle Erklärung, besonders wenn man an einem großen Projekt arbeitet, das die Semantik eines externen und/oder internen Spezifikationsdokuments bewahren muss. Ich musste vier Commit-Meldungen schreiben, um ein einzelnes Makro in der MPICH-Quelle zu ändern, weil ich das MPI-Standardverhalten UND die interne Makrosemantik erklären musste, um die Änderung zu rechtfertigen. Hätte ich das nicht getan, würde ein zukünftiger Entwickler unnötig Zeit verschwenden, um diese Informationen wieder zu entdecken. Ich würde Downvote, wenn ich könnte ... – Jeff
Danke, @ Jeff. Software ist so eine riesige Welt, es geht nicht um Regeln, sondern um Richtlinien. Manchmal ist es einfach nicht möglich, sie anzuwenden. –
Ich stimme der Idee von atomaren Commits zu (weshalb eine allgemeine Abneigung gegen Quetschen ist), aber ich denke, es ist besser, Fehler zu machen, mehr Kontexte zur Verfügung zu stellen, als benötigt und nicht weniger. Auch wenn die Arbeit nicht als atomarer Einsatz begangen wurde, würde ich nicht empfehlen, sie nach dem Vorschlag zu zerlegen. Dies erhöht das Risiko, unvollständigen Code zu schreiben. –
- 1. Wie git Format-Patch beim ersten Commit
- 2. git commit -m vs. git commit -am
- 3. Was ist das Format für --date Parameter von git commit
- 4. Ist ein Format-Update ein frivoler Git-Commit?
- 5. Git Look Commit-Protokoll für Commit-ID
- 6. Git entfernen Geschichte Commit
- 7. Git submodul commit hooks
- 8. Git "fehlende" Commit
- 9. git find fat commit
- 10. delete first git commit
- 11. Git: Fortschrittsbalken beim Commit?
- 12. Git undo Last commit
- 13. Lost Last Git Commit
- 14. git commit defekte Zeitzone
- 15. Git commit Nachricht voranstellen
- 16. git commit queue tool
- 17. Git Commit Eltern bestellen
- 18. git commit -a/nano
- 19. git commit oder Git Stash Fehler
- 20. git: push ein einzelnes commit
- 21. alle Git löscht Geschichte Commit
- 22. git rebase ein single commit
- 23. Referenz Git-Zweig Start-Commit
- 24. Intellij Git ein Commit zurück
- 25. Intercept "git commit -a (m)"
- 26. Wie git-notes commit löschen?
- 27. Commit-Nachrichtenformat in Git erzwingen
- 28. Get Git Repository letzten Commit
- 29. fehlendes Commit in Git/Gerrit
- 30. GIT Log oder Commit Monitor
Das viel häufigere Präfix für die erste Zeile ist der Teil des Projekts, für den das Commit gilt. Es könnte ein Dateiname sein, ein Modul, was immer Ihnen passt. Sonst denke ich, du hast die üblichen Verdächtigen ziemlich gut abgedeckt! – Cascabel
Ich tendiere dazu, meine Zusammenfassung mit irgendwelchen Metadaten (außer Bugpointern) nicht zu überladen. Gut geschriebene Commits mit guten Zusammenfassungen sind ein guter Anfang. Sie können immer Tags am unteren Rand der Zusammenfassung hinzufügen, um zu entscheiden, ob etwas für Release-Notizen geeignet ist. Dann setze ich diese in das eigentliche Tag und [erzeuge mein Changelog] (http://dustin.github.com/2009/01/17/changelog.html) von Tags. :) – Dustin