【问题标题】:Problems when merging git branches合并git分支时的问题
【发布时间】:2021-03-31 17:24:36
【问题描述】:

我一直在寻找,我找不到这样的场景(我希望我能解释清楚)。

在我的公司中,我们使用具有三个分支的 git(带有 bitbucket):“dev”、“release”和“master”。作为一个开发团队,我们只能访问“dev”,我们需要提出一个“pull request”来与其他分支合并。路径应该是:

(local) -> "dev" -> (pull request) -> "release" -> (pull request) -> "master".

但是一年前,有人只从“dev”合并到“release”,而“master”已经过时了。团队的其他成员做了一些从“dev”到“release”的合并,所以,“master”再次过时了。但是现在,当我们尝试从“release”合并到“master”时,我们注意到的第一件事是“master”的“pull request”包含了“release”中存在的所有提交,它会抛出一个错误告诉我们存在冲突,必须手动修复。

问题是我们无权访问“master”,根据 bitbucket 显示的说明,我们需要结帐到“release”,进行更正并再次合并到“master”,但是如果我结帐到“发布”我没有看到代码中的冲突并且无法修复它们。

我发现冲突必须由有权访问“master”的人解决,但我想知道是否有办法在不直接接触“master”的情况下进行合并?我不知道,也许是通过“拉取请求”,但对于过去的提交(虽然我没有看到那个选项)......或者我们能做什么?

我希望我解释得很好,你可以帮助我。

非常感谢阅读!

【问题讨论】:

  • 发行版中是否存在对 master 的更改?
  • @dan1st 不,问题出在“Realease”中的两次提交中修改的文件中,当尝试与“Master”进行合并时,此文件导致冲突
  • 你使用什么合并策略? (rebase/3-way-merge 或 squash)
  • "we don't have access to master" 你的意思是你不能推送到 master 吗?或者您甚至没有本地仓库中的 master 历史?

标签: git merge conflict


【解决方案1】:

合并冲突是对称的:如果您在本地克隆上将 master 合并到 release 中,您将遇到与您在 bitbucket 上看到的完全相同的冲突。

所以你可以:

  • 将master 合并到release
  • 修复冲突
  • 将结果推送到release

之后:打开 PR 以将 release 合并到 master 不会再引发冲突。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2015-12-27
    • 2023-03-06
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多