将分支移动到另一个分支

56

我开始在一个分支上工作,后来意识到这个分支不是我想要的。是否有办法将该分支移到其他分支?

例如:

我在一个分支上工作,但现在我意识到这个分支不是我想要的,我希望将它移动到另一个分支。是否有方法可以实现这一点?

A -- B -- C -- D -- HEAD
 \-- E -- F -- G -- H -- I -- J
      \-- K -- L

我希望你能完成这个:

A -- B -- C -- D -- HEAD
 \    \-- K -- L
  \
   \-- E -- F -- G -- H -- I -- J

1
如果您认为最佳答案解决了您的问题,请将其标记为“已接受”! :-) - Björn Larsson
建议:减少你的插图:EFGHIJ是不必要的。EF就足够了。 - DarkTrick
3个回答

94

假设你已经这样命名了你的分支:

    A -- B -- C -- D (master)
     \-- E -- G -- H -- I -- J (current-parent)
          \-- K -- L (my-branch)

你想要做的是将my-branch变基到B提交上,像这样:

```git git rebase B my-branch ```
    git rebase current-parent my-branch --onto B

6
这个答案应该被接受了!非常感谢。 - Nicolas Voron
感谢这张漂亮的图片。 - Rob
--onto B,其中B是一个提交,如果你想要将重置基点到该分支的最新提交,也可以使用一个分支名称。 - colm.anseo
@colm.anseo 如果你想将分支(例如 master)重新定位到最新的提交点,那么就不再需要使用 --onto 参数了,对吗?你只需执行 git checkout my-branch && git rebase master 即可。或者我有什么地方理解错了吗? - marcvangend

28

你可以使用 git rebase --onto 命令,例如:

git rebase --onto new-base old-base your-branch

所以在你的情况下,类似于这样:

git rebase --onto B E L

应该可以工作。


感谢您为选项命名。在看到这个之前非常困惑。 - java-addict301

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接