如何在使用git主题分支工作流时处理依赖关系?

Mic*_*rtl 5 git dependencies branch

在我们的项目中,我们试图接近"官方"git工作流程,如下所示:http: //www.kernel.org/pub/software/scm/git/docs/gitworkflows.html

我们使用a masternextbranch,从我们的主题分支开始master,定期进行测试集成next,如果分支完成,我们将其合并到master.

现在有时它会发生,有一些发展topic-X.开发人员somefile.c在那里创建并添加他的主题所需的代码.过了一会儿,另一个开发人员继续工作topic-Y并发现,他还需要创建somefile.c甚至需要该文件的某些部分topic-X- 但不是完整的文件,因为它还包含仅与之相关的代码topic-X.他可能还需要在该文件中添加其他代码.

如果topic-X完成并合并master,那将很容易:我们可以topic-Y重新定义master以使代码可用.但是,如果这两个主题仍然不完整呢?

因为topic-X并且topic-Y实际上是无关的,除了这个次要的共享代码之外,somefile.c我们如何避免将它们相互合并并仍为开发人员提供共享部分somefile.c

如果我们只用相关部分创建一个新的somefile.cin 副本topic-Y,我们发现当我们测试集成时,我们会在以后遇到合并冲突next.还有其他选择吗?

Hug*_*ler 1

合并时,git 会检测提交中的更改是否已经应用。

topic-x因此,当您在该更改中进行了somefile.c您也想要的提交时topic-y,您可以在 中挑选该提交topic-y。(让自己轻松一些,并将此提交仅限于您想要共享的内容。)

git checkout topic-y
git cherry-pick topic-x
Run Code Online (Sandbox Code Playgroud)

稍后,当您合并topic-x和时topic-y,git 将看到补丁已被应用并优雅地跳过它。

这是比变基更好的选择,因为如果分支已经向多个开发人员公开,则变基会产生严重的副作用。