2010-11-08 9 views

Antwort

12

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

+1

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

+0

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

1

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.

+1

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

+0

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. –

+0

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. –