多人如何进行GIT分支合并

3
我们使用stash(即Bitbucket)。
我们团队有多个开发人员,他们专门负责同一GIT代码库中的不同模块。而这些模块位于不同的目录中。 同时,还有其他团队在同一个源代码上工作(在“develop”分支中),他们可能会更改任何一个模块。
例如:
src |-- module A -- |-- module B --
我们团队在一个团队分支上工作,该分支是从“develop”分支分支出来的。
现在,我们想要将“team”分支合并到“develop”分支中,并且不同模块中存在合并冲突。每个模块的专业开发人员应该解决合并冲突。另一位开发人员应该通过stash(Bitbucket)拉取请求进行审核。
如何协作完成此任务?最好的方法是什么? 进一步澄清,我想知道如何进行协作合并?(我知道如何使用合并工具执行GIT合并)
所有开发人员都使用相同的登录信息并解决合并冲突吗?
2个回答

0
不同模块之间存在合并冲突。 在将团队合并到开发中时,不应该出现合并冲突。 每个团队都应该在其专用分支的模块上进行开发,并首先将该专用分支重新定位到开发分支上:一旦模块团队在本地解决了冲突,然后可以在该模块分支和开发分支之间进行(微不足道的)合并。 其他团队可以重新定位其自己的模块分支,确保每个团队成员重置其自己的模块分支以考虑新的历史记录,并从那里继续。

嗨@VonC,我编辑了这个问题“还有其他团队在同一源代码(在'develop'分支中)上工作,他们可以更改任何模块。”由于其他团队可以更改develop分支中的内容,因此可能会出现合并冲突。 - aKumara
@aKumara 没错:这些更改应该在专用模块分支中进行(每个模块一个分支)。但如果这些模块彼此链接,则将整个团队分支重新基于 develop,然后要求每个团队开发人员重置其自己的团队分支本地克隆。冲突解决将是本地的(由团队完成),然后合并到 develop 也将是本地的。 - VonC

0

学习如何解决这个问题 https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

或者

尝试:git mergetool

它会打开一个 GUI,指导您处理每个冲突,并且您可以选择如何合并。有时候需要稍微手动编辑,但通常只用它就足够了。这比手工操作要好得多。

除非您安装了GUI,否则该命令不一定会打开GUI。对我而言,运行git mergetool导致使用vimdiff。您可以安装以下工具之一来代替使用它:meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmergep4mergearaxisvimdiffemerge

以下是使用vimdiff解决合并冲突的示例过程。基于this link

步骤1:在终端中运行以下命令。

git config merge.tool vimdiff
git config merge.conflictstyle diff3
git config mergetool.prompt false

这将把vimdiff设置为默认的合并工具。

步骤2:在终端中运行以下命令

git mergetool

步骤三:您将看到以下格式的vimdiff显示

  ╔═══════╦══════╦════════╗
  ║       ║      ║        ║
  ║ LOCAL ║ BASE ║ REMOTE ║
  ║       ║      ║        ║
  ╠═══════╩══════╩════════╣
  ║                       ║
  ║        MERGED         ║
  ║                       ║
  ╚═══════════════════════╝

这4个视图是

LOCAL - 这是当前分支的文件

BASE - 共同祖先,即在两次更改之前的文件

REMOTE - 您正在合并到您的分支的文件

MERGED - 合并结果,这是保存在仓库中的内容

您可以使用 ctrl+w 在这些视图之间导航。您可以直接使用 ctrl+w 然后按 j 键来到达 MERGED 视图。

有关 vimdiff 导航的更多信息 此处此处

步骤 4。您可以通过以下方式编辑 MERGED 视图

如果您想从 REMOTE 获取更改

:diffg RE  

如果你想从基础获取更改

:diffg BA  

如果你想从本地获取变更

:diffg LO 

步骤 5。保存,退出,提交和清理

:wqa 保存并退出 vi

git commit -m "消息"

git clean 删除 diff 工具创建的额外文件(如 *.orig)。


抱歉,如果问题有点混淆。我想知道最好的协作合并方式是什么?我知道如何单独进行合并。 - aKumara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接