[英]Git branching from another branch
我试图确保我不会弄乱我一直在努力的大型功能分支。 我有两个遥控器:
origin - with branch dev
my - a fork of origin, with my branch dev
因此,工作流程是获取原点,放入我的原点开发器,从中进行分支,上推,然后将分支合并到原点开发中:
# On my dev
git fetch origin
... received new stuff...
git pull origin dev
我有一个依赖于未合并的其他分支功能的功能。 因此,我这样做:
# On my dev
git checkout -b first-feature
git checkout -b second-feature-based-on-first-feature
从这里开始,我一直遵循正常的工作流程,在该工作流程中更新了origin dev之后,我们以此为基础重新建立分支:
git checkout first-feature
git pull --rebase origin dev
git push my first-feature -f
然后我将第一个分支拉到第二个分支下:
git checkout second-feature-based-on-first-feature
git pull --rebase my first-feature
git push my second-feature-based-on-first-feature -f
今天,第一功能已合并为原始开发人员。 我期望在github上显示第二个功能(第一功能和第二功能)的github上的第二功能的pull请求,基本上现在才显示第二功能。 但事实并非如此。 我将第二功能基于origin开发,尽管一切似乎还不错,但我对此感到担心。 我只是强行将第二功能推高了吗?
我知道这有点具体。 我想我的问题是:这应该如何工作?我在哪里出错了(如果有的话)? 我尝试遵循其他答案以将分支从分支下立,但这是一个如此陌生的领域,我不想犯一个大错误。
我认为您看到的问题是重写历史记录的副作用。
当您变基时,它实际上会更改提交哈希
提交的哈希取决于:
因此,在使用原点/母版重新定义基础功能时,对第一功能的提交仍基于原始第一功能的提交,因此,当您使用第一功能对第二功能进行基础化时,则在第一位置进行提交不同的是,然后rebase更改了更改的前两个提交。 所以你有:
1) -- A
\ -- B
\ -- C
After rebase origin/dev
2) -- A -- B'
-- A -- B
\ -- C
Rebase with first-feature
3) -- A' -- B' -- B -- C'
至少这是从您描述的流程中看到的结果。 我希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.