【问题标题】:how to do a GIT branch merge by multiple people如何由多人进行GIT分支合并
【发布时间】:2019-10-21 04:12:21
【问题描述】:

我们使用 stash(即比特桶)

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

例如

src

|--模块A--

|--模块B--

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

现在我们想将'team'分支合并到'develop'分支,不同模块存在合并冲突。每个模块的专业开发人员应修复合并冲突。另一位开发人员应通过 stash(Bit bucket)拉取请求审查更改

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

所有开发人员使用相同的登录名并修复合并冲突?

【问题讨论】:

    标签: git bitbucket


    【解决方案1】:

    在此处了解如何解决此问题https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-using-the-command-line

    试试:git mergetool

    它会打开一个 GUI,引导您完成每个冲突,然后您可以选择如何合并。有时它需要在之后进行一些手工编辑,但通常它本身就足够了。这当然比手工完成要好得多。

    该命令不一定会打开 GUI,除非您安装了一个。为我运行git mergetool 导致使用vimdiff。您可以安装以下工具之一来使用它:meldopendiffkdiff3tkdiffxxdifftortoisemergegvimdiffdiffuseecmerge、@ 987654337@、araxisvimdiffemerge

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

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

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

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

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

    git mergetool
    

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

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

    这4个视图是

    LOCAL - 这是来自当前分支的文件

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

    REMOTE – 正在合并到分支的文件

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

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

    有关 vimdiff 导航 herehere 的更多信息

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

    如果您想从 REMOTE 获取更改

    :diffg RE  
    

    如果你想从 BASE 获取更改

    :diffg BA  
    

    如果您想从 LOCAL 获取更改

    :diffg LO 
    

    第 5 步。保存、退出、提交和清理

    :wqa保存并退出vi

    git commit -m "message"

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

    【讨论】:

    • 对不起,如果问题令人困惑。我想知道的是进行协作合并的最佳方式?我知道如何单独进行合并。
    【解决方案2】:

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

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

    【讨论】:

    • 嗨@VonC,我编辑了问题“还有其他团队在同一源代码上工作(在'开发'分支中),他们可以在任何模块中进行更改。”由于其他团队可以在开发分支中进行更改,因此可能会出现合并冲突
    • @aKumara 确切地说:这些更改应该在模块专用分支中进行(每个模块一个分支)。但是,如果这些模块链接在一起,则将所有团队分支重新设置在开发之上,并要求每个团队开发人员重置他们自己的团队分支的本地克隆。冲突解决将是本地的(由团队完成),然后要开发的合并将是本地的。
    猜你喜欢
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 2021-08-18
    • 2023-03-06
    • 2012-05-25
    • 1970-01-01
    • 2021-01-04
    • 2018-08-06
    相关资源
    最近更新 更多