git rebase:复制而不是移动

时间:2013-10-31 11:28:58

标签: git rebase

我的分支是:

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

但是没有移动分支而是复制它?

2 个答案:

答案 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合并到两个分支中。它会给你更漂亮的历史,没有重复的提交。