正确的Github Rebase工作

时间:2016-03-23 21:15:01

标签: git github rebase

我没有Github的经验,所以我希望有人可以帮我找出正确的命令序列。

我正在使用Github回购提供这种情况:

------master     
     /
-- dev
     \
      --------extrabranch c11 --- extrabranch c12

也就是说,从dev上的最后一次提交开始,我在master上合并了它,然后创建了一个新的分支extrabranch并向该分支添加了两个提交。 这种情况在Github远程存储库和本地。

中是相同的

现在我会在extrabranch上重新dev

在本地尝试:

git rebase dev extrabranch
Current branch extrabranch is up to date.
git pull --rebase
Current branch extrabranch is up to date.

但提交图仍与上述相同。 有人可以向我解释为什么分支dev不包含已重新定位c11的提交c12extrabranch吗?

修改:我的目标是将extrabranch合并到dev,并尽可能干净地删除extrabranch

1 个答案:

答案 0 :(得分:3)

让我们看看您的图表。我修改了它以显示提交c10,即masterdev点。您的插图并未显示此内容,但根据定义,必须在那里提交。

-- c10 [master, dev]
     \
      --- c11 --- c12 [extrabranch]

git rebase的目的是移动提交,基于图中的特定点。你告诉git将extrabranch (c11 + c12)重新定义到dev (c10)。但是,extrabranch 已基于 dev,因此无需执行任何操作。

您说您的目标是将extrabranch合并到dev,然后尽可能干净地删除extrabranch。最简单的方法是合并它。因为没有冲突,它将使用快进合并。

git checkout dev
git merge extrabranch

这会将dev分支移至c12所在的位置。

-- c10 [master]
     \
      --- c11 --- c12 [extrabranch, dev]

之后,如果您愿意,您应该可以删除extrabranch

git branch -d extrabranch
-- c10 [master]
     \
      --- c11 --- c12 [dev]

这假设dev上没有上游提交,您的帖子没有显示。不过,您可以使用pullfetch来计算出来。