git rebase:复制而不是移动

zap*_*dlo 28 git rebase

我的分支是:

o---o  support.2013.16
     \
      o---o---o---o---o  master
                       \
                        o---o---o  hotfix/A
Run Code Online (Sandbox Code Playgroud)

我需要复制hotfix/A来支持.2013.16.我知道采摘樱桃,但有可能做类似的事情

git rebase --onto support.2013.16 master hotfix/A
Run Code Online (Sandbox Code Playgroud)

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

Wol*_*olf 47

Git rebase确实将原始分支复制到新分支; 但是因为它移动了分支头,感觉就像一个动作而不是一个副本.如果您曾经git branch在原始分支中添加了一个额外的分支头,那么在git rebase制作了重新定位的副本之后,您仍然可以轻松访问原始分支.所以在你的例子中

git branch rebased-A hotfix/A
git rebase --onto support.2013.16 master rebased-A
Run Code Online (Sandbox Code Playgroud)

离开你

      o---o---o  rebased-A (hotfix/A')
     /
o---o  support.2013.16
     \
      o---o---o---o---o  master
                       \
                        o---o---o  hotfix/A
Run Code Online (Sandbox Code Playgroud)


kan*_*kan 8

您可以创建一个新分支:

git checkout -b hotfix/A-support hotfix/A
Run Code Online (Sandbox Code Playgroud)

然后改变它.所以你将有两个分支.也许你可能决定在将它合并到分支后放弃support分支.

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