如何由多人合并GIT分支

时间:2019-10-21 04:12:21

标签: git bitbucket

我们使用存储(即位存储桶)

我们的团队中有多个开发人员,他们专门研究同一GIT存储库代码中的不同模块。模块位于不同的目录中。 另外,还有其他团队在相同的源上工作(在“开发”分支中),他们可以在任何模块中进行更改。

例如

src

|-模块A-

|-模块B-

我们的团队在团队分支工作,该分支从“开发”分支分支出来。

现在,我们想将“ team”分支合并到“ develop”分支,并且在不同的模块中存在合并冲突。每个模块的专业开发人员都应解决合并冲突。另一个开发人员应通过隐藏(位存储桶)请求请求查看更改

实现此目标的最佳方法是什么? 为了进一步说明,我想知道如何协作执行合并? [我知道如何使用合并工具执行GIT合并]

所有开发人员都使用相同的登录名并解决合并冲突吗?

2 个答案:

答案 0 :(得分:0)

在此处https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

了解如何解决该问题

OR

尝试:git mergetool

它将打开一个GUI,逐步引导您解决每个冲突,然后您可以选择合并方式。有时之后需要进行一些手动编辑,但通常仅此一项就足够了。这肯定比手工完成整个事情要好得多。

除非您安装一个GUI,否则该命令不一定会打开GUI。为我运行git mergetool导致使用了vimdiff。您可以安装以下工具之一来代替使用它:meldopendiffkdiff3tkdiffxxdifftortoisemerge,{ {1}},gvimdiffdiffuseecmergep4mergearaxisvimdiff

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

第1步:在终端上运行以下命令

vimdiff

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

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

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

第3步:您将看到以下格式的Vimdiff显示

git mergetool

这4个视图是

  

本地-这是当前分支中的文件

     

BASE –共同祖先,两次更改之前文件的外观

     

REMOTE –您要合并到分支中的文件

     

MERGED –合并结果,这就是保存在存储库中的内容

您可以使用 ctrl + w 在这些视图之间导航。您可以先按 ctrl + w ,然后按 j 进入MERGED视图。

有关vimdiff导航herehere的更多信息

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

如果您想从REMOTE获得更改

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

如果您想从BASE获得更改

:diffg RE  

如果您想从本地获得更改

:diffg BA  

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

:diffg LO 保存并退出vi

:wqa

git commit -m "message"删除由差异工具创建的其他文件(例如* .orig)。

答案 1 :(得分:0)

  

,并且在不同模块中存在合并冲突。

合并团队进行开发时不应存在合并冲突。
每个团队都应在自己的模块专用分支中进行开发,并首先在开发基础上重新建立专用分支的基础:一旦模块团队在本地解决了冲突,则可以在它们之间进行(简单的)合并模块分支并进行开发。
然后其他团队可以重新建立自己的模块分支基础,确保每个团队成员都重置自己的模块分支以考虑新的历史记录,然后从那里继续。