假设我有一个顶级Git分支“ dev”,并且创建了一个新的功能分支“ feature1”。
git checkout -b feature1 dev
现在,我决定当我在此分支中时需要修复一个错误,因此我创建了第二个分支“ bug1”。
git checkout -b bugfix feature1
现在我有了这个分支结构:
dev
feature1
bug1
我想将新功能和错误修复合并回我的dev分支。为此,是否需要像这样以相反的顺序合并每个分支(即“追溯我的步骤”)?
git checkout feature1
git merge --no-ff bug1
git checkout dev
git merge --no-ff feature1
还是我可以像这样从bug1直接返回到开发人员,然后仍然选择新的功能代码?
git checkout dev
git merge --no-ff bug1
请,关于这是我当前的工作流程,我不满意关于重新设置基准或以其他方式进行更改的更好评论,我对此感到满意。如果仅分支并使用检出和合并功能,那么这两者在向我的dev Git分支添加新功能和错误修复方面是否具有相同的效果?
答案 0 :(得分:1)
如果import { USA } from './Test';
console.log(USA);
是Test.js
的祖先(即feature1
包含bug1
中的所有提交),则将bug1
合并到{{1 }}会产生与将feature1
合并到bug1
,然后将dev
合并到bug1
中相同的内容(相同的Git树)。
这是因为在这种情况下,将feature1
合并到feature1
中会产生与dev
相同的Git树,因为它等同于快进(只是您表示您没有这样做)。想要一个)。本质上,您正在创建一个合并,其中一侧未更改,而另一侧已更改,在这种情况下,Git将使用所有已更改的组件。
如果还有bug1
中未包含的对feature1
的其他提交,则显然它们是不等效的。
答案 1 :(得分:0)
将bug1
合并到dev
会将dev
上的所有提交都带入bug1
,其中包括您从{{ 1}}到feature1
,或者如果您从未从feature1
合并到bug1
,那将是在feature1
之外创建bug1
之前。>
简而言之,如果您没有在bug1
上进行的对feature1
的提交,则可以直接从feature1
合并到bug1
。否则,您需要将两者都合并到bug1
,但是顺序并不重要。