Sie sollten wirklich einen Arbeitsablauf haben, mit dem Sie das alles durch Zusammenführen erledigen können:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (wss)
Alles, was Sie also tun müssen, ist git checkout v2.1
et git merge wss
. Wenn Sie dies aus irgendeinem Grund nicht tun können, und Sie können nicht mit Git-Rebase um Ihren wss-Zweig an die richtige Stelle zu verschieben, lautet der Befehl, um einen einzelnen Commit von irgendwoher zu nehmen und ihn anderswo anzuwenden Git-Pick . Checken Sie einfach den Zweig aus, auf den Sie es anwenden wollen, und führen Sie git cherry-pick <SHA of commit to cherry-pick>
.
Einige der Möglichkeiten, wie Sie mit rebase sparen können:
Wenn Ihre Geschichte wie folgt aussieht:
- x - x - x (v2) - x - x - x (v2.1)
\
x - x - x (v2-only) - x - x - x (wss)
Sie könnten verwenden git rebase --onto v2 v2-only wss
um wss direkt auf v2 zu übertragen:
- x - x - x (v2) - x - x - x (v2.1)
|\
| x - x - x (v2-only)
\
x - x - x (wss)
Dann können Sie fusionieren! Wenn Sie wirklich, wirklich, realmente nicht bis zu dem Punkt kommen, an dem Sie zusammenführen können, können Sie immer noch Rebase verwenden, um effektiv mehrere Cherry-Picks auf einmal durchzufü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, dass dies zusätzliche Arbeit erfordert, ist, dass es doppelte Commits in Ihrem Repository erzeugt. Das ist nicht wirklich eine gute Sache - der Sinn des einfachen Verzweigens und Zusammenführens ist es, alles zu tun, indem man Commits an einem Ort macht und sie dort zusammenführt, wo sie gebraucht werden. Doppelte Commits bedeuten, dass Sie nie die Absicht haben, diese beiden Zweige zusammenzuführen (falls Sie sich später dazu entscheiden, werden Sie Konflikte bekommen).