将最新提交分成多个分支

时间:2015-09-11 16:10:57

标签: git rebase git-rebase

我知道有关这个问题的几个问题,但我没有找到解决这个问题的任何问题。诀窍是我需要从另外两个之间拉出一个提交。

我的回购看起来像这样:

A - B - C     <- master
          \
            D  <- devel

我希望它看起来像这样:

    C  <- feature1
  /
A
  \
    B - D  <- feature2

我知道我可能会使用rebase这个,但是在使用Git一年后,我仍然不清楚所有的行话。

1 个答案:

答案 0 :(得分:1)

更新:使用提交哈希而不是基本分支。


是的,我会改变。我知道有一种更快的方法可以通过“rebase to”来做到这一点,但我总是对如何使它恰到好处感到困惑。我要做的是用所有东西创建新的分支,然后删除你不想要的东西。

基本提交

您需要的第一件事是提交A的提交哈希。您将在接下来的步骤中将其用于git rebase

## Copy the 6-char hex value next to commit "A"
git log --oneline

<强> 特征1

git checkout -b feature1 master
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit B, and save

<强> 特征2

git checkout -b feature2 devel
# insert the commit hash for commit A
git rebase -i $A
# in the VI editor, delete the line representing commit C, and save

-i上的git rebase标志指示执行“交互式rebase”。这就是为什么你会有一个编辑器。阅读内置说明,了解您将来可以根据需要做些什么。除了根据上游的更新重新定位本地提交之外,我几乎每天都使用它来重命名提交并将提交合并为一个,然后将我的更改推回到上游。这是一个非常强大的工具,可以理解并且不是那么复杂。