2013-08-30 12 views
30

Als git Best Practice sollte man häufig committen, aber um den Code zu überprüfen, den Sie benötigen, um einen Patch zu überprüfen, der aus mehreren Commits gleichzeitig besteht. Gibt es eine Möglichkeit, mehrere Commits zu überprüfen und entweder zusammenzufassen oder auf einmal abzulehnen?Gerrit: Kombinieren Sie mehrere Commits zu einer "Änderung"

Antwort

13

Nein, Gerrit unterstützt Batch-Commits derzeit nicht in einer Überprüfung. Es gibt jedoch noch ein paar andere Möglichkeiten.

Bei $ DAYJOB verwendet mein Team Feature-Zweige für größere Änderungen. Die kleineren Commits werden einzeln auf den Feature-Zweig überprüft/zusammengeführt, aber der Feature-Zweig wird nur zusammengeführt, sobald alles in einem guten Platz ist und alle Entwickler glücklich sind.

Gerrit unterstützt auch Themenverzweigungen - eine bequeme Möglichkeit zum Gruppieren verwandter Zusagen. Sie werden kurz in der documentation diskutiert. Diese Commits müssen noch einzeln überprüft/zusammengeführt werden, sie können jedoch schnell in der Web-Benutzeroberfläche gruppiert werden.

22

Eine Sache, die Sie tun können, ein Squash Merge zu einem temporären Zweig und dann diese Änderung für die Überprüfung buchen.

git checkout -b feature 
git commit -m "start feature" 
... 
git commit -m "finish feature" 
git checkout -b feature-review master 
git merge --squash feature 
git commit 

Jetzt ist Ihre feature-review Zweig die gleiche diff relativ zu master als feature enthielt, aber mit nur einem einzigen zu begehen.

+1

Vielen Dank für Ihre Antwort. Aber wie drücken Sie dann nach Code-Überprüfungen, die Code-Änderungen beinhalten können, zu einem Master? – Nonos

+0

Sie können weiter an dem gewünschten Zweig (Feature-Feature oder Feature-Review) arbeiten und ihn nach Abschluss des Vorgangs verschieben. Sie können sogar den Prozess des Squash-Mergens für Ihren letzten Commit wiederholen, je nachdem, wie viel Sie sich um Geschichte kümmern und die Commits auflösen. –

+5

'git merge --squash'wird den Verlauf umschreiben und erlaubt Ihnen nicht,' git bisect' auf dem Feature zu verwenden – summerbulb

0

Wenn Sie bereits gebucht Überprüfung Anfragen aktualisieren müssen, dann können Sie Commits nutzen ändern:

git commit --amend -C HEAD 

und dann für konsequente Überprüfung drücken.

Ich glaube, dass öffentliche commits atomar sein sollten und den kompletten Funktionsumfang enthalten, den Sie beitragen möchten. Normalerweise möchten Sie nicht alle Ihre Zwischen-Commits teilen. Quetschungen vor der Überprüfung sind also eine gute Idee.

+0

Eine Schule des Denkens sagt, es ist am besten, disruptive Änderungen als eine Folge von winzigen atomaren Commits zu machen, von denen jeder drückbar ist, um zu prod. Die Beibehaltung dieser kleinen Commits macht es einfacher zu sehen, was Sie getan haben und warum, leichter zu tun, macht Bisektionen nützlicher und überprüft einfacher und schneller (zB wenn eine Datendatei sortiert wurde und eine Zeile hinzugefügt wurde, werden diese beiden Commits mit zwei) winzige Commit-Nachrichten machen deutlich, was passiert ist und warum. Squashing bedeutet, dass der große Unterschied von der Sorte die Einfügung verschleiert.) Diese Idee ist an den besten Orten populär, an denen ich gearbeitet habe. –

Verwandte Themen