Sie sollten wirklich einen Workflow haben, mit dem Sie dies alles durch Zusammenführen tun können:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (wss)
Alles was Sie tun müssen ist git checkout v2.1
und git merge wss
. Wenn Sie dies aus irgendeinem Grund wirklich nicht tun können und Sie git rebase nicht verwenden können , um Ihren wss-Zweig an die richtige Stelle zu verschieben, lautet der Befehl, ein einzelnes Commit von irgendwoher abzurufen und an anderer Stelle anzuwenden, git cherry-pick . Schauen Sie sich einfach den Zweig an, auf den Sie ihn anwenden möchten, und führen Sie ihn aus git cherry-pick <SHA of commit to cherry-pick>
.
Einige der Möglichkeiten, wie Rebase Sie retten kann:
Wenn Ihre Geschichte so aussieht:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (v2-only) - x - x - x (wss)
Sie können git rebase --onto v2 v2-only wss
wss verwenden , um wss direkt auf v2 zu verschieben:
- x - x - x (v2) - x - x - x (v2.1)
|\
| x - x - x (v2-only)
\
x - x - x (wss)
Dann können Sie zusammenführen! Wenn Sie wirklich, wirklich, wirklich nicht an den Punkt gelangen, an dem Sie zusammenführen können, können Sie Rebase verwenden, um mehrere Kirschpicks gleichzeitig effektiv auszuführen:
# wss-starting-point is the SHA1/branch immediately before the first commit to rebase
git branch wss-to-rebase wss
git rebase --onto v2.1 wss-starting-point wss-to-rebase
git checkout v2.1
git merge wss-to-rebase
Hinweis: Der Grund dafür ist zusätzliche Arbeit, da doppelte Commits in Ihrem Repository erstellt werden. Dies ist nicht wirklich eine gute Sache - der springende Punkt beim einfachen Verzweigen und Zusammenführen ist, dass Sie alles tun können, indem Sie Commits an einem Ort platzieren und sie dort zusammenführen, wo sie benötigt werden. Doppelte Commits bedeuten die Absicht, diese beiden Zweige niemals zusammenzuführen (wenn Sie sich später dazu entschließen, treten Konflikte auf).