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.
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.
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.
Fügen Sie bei vielen Mitarbeitern das .git / rr-Cache-Verzeichnis zu Ihrem Projekt hinzu.
%Vor%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.
Tags und Links git git-commit