34

我的分支是:

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

但不移动分支而是复制它?

4

2 回答 2

55

Gitrebase确实确实将原始分支复制到了一个新分支。但是因为它移动了分支头,感觉就像是移动而不是复制。如果您过去在原始分支上添加了一个额外的分支头,那么在制作了重新定位的副本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
于 2013-10-31T11:50:14.170 回答
9

您可以创建一个新分支:

git checkout -b hotfix/A-support hotfix/A

并改用它。所以你会有两个分支。也许您可能决定在将分支合并到分支后将其删除support

或者,您可以hoftix/A将其重新设置为基础git merge-base support.2013.16 master,然后您可以轻松地将其合并hotfix/A到两个分支中。它会给你更漂亮的历史,没有重复的提交。

于 2013-10-31T11:35:32.207 回答