所以我想复制一个分支,但复制的分支基于主分支。
main
|
A---B---C (main)
\
D---E (branch A)
main
|
A---B---C (main)
\
D---E (branch A)
\
D'---E' (branch B, copy of branch A)
main
|
A---B---C (main)
\ \
\ D'---E' (branch B, copy of branch A, rebased onto main)
\
D---E (branch A)
有没有简单的方法可以做到这一点?除了正常的拉和推命令之外,我对 git 还很陌生。
我尝试使用带有复制标志的 git checkout,然后使用 --onto 标志进行变基,但是当我这样做时,来自分支 A 的所有提交都不属于分支 B。
您的第二个示例是不可能的(您无法在其自身之后复制提交 - 更改已包含在分支中)。
但是从第一张图到第三张图很简单:使用
git rebase
或 git cherry-pick
:
git checkout -b B A # create new branch B from A
git rebase main # rebase commits of B to main
git checkout -b B main # create new branch B from A
git cherry-pick D E # copy commits to your current branch (B)
变基和挑选都会创建new提交。