我没有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
的提交c12
和extrabranch
吗?
修改:我的目标是将extrabranch
合并到dev
,并尽可能干净地删除extrabranch
。
答案 0 :(得分:3)
让我们看看您的图表。我修改了它以显示提交c10
,即master
和dev
点。您的插图并未显示此内容,但根据定义,必须在那里提交。
-- 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
上没有上游提交,您的帖子没有显示。不过,您可以使用pull
或fetch
来计算出来。