繁体   English   中英

从另一个分支分支的Git

[英]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开发,尽管一切似乎还不错,但我对此感到担心。 我只是强行将第二功能推高了吗?

我知道这有点具体。 我想我的问题是:这应该如何工作?我在哪里出错了(如果有的话)? 我尝试遵循其他答案以将分支从分支下立,但这是一个如此陌生的领域,我不想犯一个大错误。

我认为您看到的问题是重写历史记录的副作用。

当您变基时,它实际上会更改提交哈希

提交的哈希取决于:

  1. 此提交的树(即源的当前状态)
  2. 提交的任何父母的哈希
  3. 提交元数据(作者日期,作者,提交日期,提交者,提交消息等)。

资源

因此,在使用原点/母版重新定义基础功能时,对第一功能的提交仍基于原始第一功能的提交,因此,当您使用第一功能对第二功能进行基础化时,则在第一位置进行提交不同的是,然后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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM