我的分支是:
o---o support.2013.16
\
o---o---o---o---o master
\
o---o---o hotfix/A
我需要将hotfix / A复制到support.2013.16。我知道挑选樱桃,但有可能做类似
的事情git rebase --onto support.2013.16 master hotfix/A
但是没有移动分支而是复制它?
答案 0 :(得分:45)
Git rebase
确实将原始分支复制到新分支;但是因为它移动了分支头,感觉就像一个动作而不是一个副本。如果您使用git branch
向原始分支添加了一个额外的分支头,那么在git rebase
制作了重新定位的副本后,您仍然可以轻松访问原始分支。所以在你的例子中
git branch rebased-A hotfix/A
git rebase --onto support.2013.16 master rebased-A
离开你
o---o---o rebased-A (hotfix/A')
/
o---o support.2013.16
\
o---o---o---o---o master
\
o---o---o hotfix/A
答案 1 :(得分:8)
您可以创建一个新分支:
git checkout -b hotfix/A-support hotfix/A
然后改变它。所以你将有两个分支。也许您可能决定在将其合并到support
分支后删除分支。
或者,您可以将hoftix/A
重新绑定到git merge-base support.2013.16 master
,然后您可以轻松地将hotfix/A
合并到两个分支中。它会给你更漂亮的历史,没有重复的提交。