/ / Diff zwischen zwei Patches - git, diff, git-flow

Diff zwischen zwei Patches - Git, Diff, Git-Flow

Nehmen wir an, ich habe einen Entwicklungszweig und arbeite inBei einigen Feature-Zweigen, bei denen ich ein oder mehrere Commits habe, ändere ich ständig Commits und baue sie mit anderen Filialen ab (um die Commit-Historie für die Zukunft sauber zu halten). In jeder Phase mache ich lokale Unterschiede in Bezug auf die Entwicklung. Ich habe also eine Reihe von Differenzen und möchte den Unterschied zwischen ihnen sehen. Wie mache ich das einfach? Welche Art von git-Befehlssequenz kann ich verwenden?

Aktualisieren

Die Lösung besteht darin, zwei Unterschiede zu habenentwickeln. Lassen Sie die Kopie des Repositorys entwickeln, wenden Sie den ersten Unterschied an. Haben Sie eine andere Kopie und wenden Sie einen anderen Patch an. Verwenden Sie ein Vergleichstool und vergleichen Sie zwei Repositorys. Das wäre das Ergebnis, das ich erwarte. Das Problem bei dieser Herangehensweise ist, dass ich mindestens zwei Kopien des Repositorys haben und ein Werkzeug verwenden muss, um einen Unterschied zwischen Verzeichnissen zu machen. Ein anderer Ansatz, der wahrscheinlich besser ist, besteht darin, zwei Zweige zu verwenden, Patches anzuwenden und Änderungen zu übernehmen und dann die Zweige zu vergleichen. Die Frage: Gibt es etwas einfacheres in git-Befehlen, um das zu tun? Nehmen Sie so etwas wie diesen Zweig und zwei diff-Dateien.

Antworten:

1 für die Antwort № 1

Ihr zweiter Workflow ist die Antwort. Hier ist ein möglicher Alias:

diffdiff = !git stash save -u -q &&
git apply $1 && git add -A && git commit -q -m"1" &&
git reset --hard HEAD@{1} -q &&
git apply $2 && git add -A && git commit -q -m"2" &&
git reset --hard HEAD@{1} -q && git stash pop -q &&
git diff HEAD@{3} HEAD@{1} && :

Nennen Sie es in dem Zweig, in dem Sie die diffs mit diff-Dateien außerhalb des Repositorys anwenden möchten.

git diffdiff <diff_file_1> <diff_file_2>

Keine auf OSX getestete Lösung für mehrere Plattformen mitZsh und Bash Shells. Wenn Sie in Ordnung sind, es manuell zu machen, ist es ein bisschen einfacher. Die Komplikationen hier sind eine Art narrensichere Lösung. Auch die erste Zeile der Ausgabe ist Rauschen. Es scheint, als ob Git-Stash-Pop den --quiet -Parameter nicht befolgt.

(Bearbeiten: Der temporäre Zweig ist nicht erforderlich, daher wurde der Alias ​​vereinfacht.)