Zeigen Sie die Autoren und die Commit-Nachricht für Commits an, die einen Konflikt verursachen

8

Ich habe zwei lang laufende Zweige dev und eine weit entfernte Version namens future . Wir erstellen Fixes für die unterstützte Version, indem wir von dem Tag, der den Fehler aufweist, verzweigen, ihn reparieren und anschließend Pull-Requests für die beiden Zweige öffnen. Wenn es einen Konflikt im "zukünftigen" Zweig gibt, sollten unsere Entwickler einen neuen Zweig erstellen, die Konflikte lösen und einen weiteren PR für die Zukunft eröffnen.

Leider ist unser Team groß genug, dass viele dieser zweiten PRs nicht gemacht wurden. Ich muss jetzt herausfinden, welche genauen Commits Konflikte verursacht haben. Ich kann dies manuell tun, indem ich git Schuld an jeder konfliktbehafteten Datei mache und die Commits auf jeder Seite der ====== -Zeile sehe, aber das gibt mir nicht genügend Informationen, und ich muss git Schuld für jeden Konflikt manuell ausführen und jede Datei.

Gibt es einen leichteren Weg? Im Idealfall möchte ich etwas Ähnliches haben:

%Vor%

für jeden einzelnen Konflikt.

Obwohl alles, was mir nur die Liste der widersprüchlichen Commits gibt, wäre genug nützlich, um das Kopfgeld zu rechtfertigen.

    
Daniel 26.06.2015, 01:57
quelle

4 Antworten

3

Sie könnten git diff --diff-filter=U beim Zusammenführen ausführen, um die diff-Ausgabe für alle (und nur für) nicht zusammengeführten Dateien anzuzeigen. Es ist immer noch mit Dateiinhalt, aber es ist besser als manuell einen Befehl für jede Datei auszuführen.

    
Amber 26.06.2015 02:01
quelle
2

Sie können sehr schnell ganz nah kommen:

%Vor%

und wirklich, es ist nur der rechte Zweig (derjenige, in dem man sich zusammenfindet), die Autoren, die dir wichtig sind - die linken Zweige sind bereits verschmolzen, lass, wer auch immer berührt hat, was du bereits hast, sortiere es.

Fügen Sie dem Protokollbefehl --topo-order hinzu, um die Commits für jede Verzweigung zusammenzulisten.

    
jthill 06.07.2015 09:45
quelle
1

Sie müssen anfangen, git rerere zu verwenden. Sie müssen den Konflikt einmal lösen, aber für fast jede neue Rebase wird die alte Zusammenführung es dann automatisch tun. Manchmal musst du ein git rebase --skip machen.

Ссылка

%Vor%

Fügen Sie bei vielen Mitarbeitern das .git / rr-Cache-Verzeichnis zu Ihrem Projekt hinzu.

%Vor%     
rurban 05.07.2015 22:41
quelle
0

Sie sollten in Erwägung ziehen, ein Überprüfungstool wie Gerrit zu verwenden, das mögliche Zusammenführungskonflikte vor dem Senden einer Änderungsliste an eine Verzweigung erkennt. Mir ist klar, dass dir das in dieser Sekunde nicht weiterhilft, aber ich glaube, du musst selbst ein Werkzeug schreiben, um zu machen, was du willst.

    
Christian Goetze 30.06.2015 16:51
quelle

Tags und Links