【问题标题】:Resolving merge conflict merged in both source and target branch解决源分支和目标分支中合并的合并冲突
【发布时间】:2020-06-15 00:36:41
【问题描述】:

我有两个分支:
分支'dev'
分支'prod'

'dev' 是整合所有功能的地方,'prod' 是生产分支。在新版本发布之前,“dev”被合并到“prod”,并从中构建发布版本。

“prod”分支有某些东西,例如我不希望在“dev”分支中出现的广告。

今天在将 'dev' 合并到 'prod' 时,我遇到了合并冲突。解决合并更改了我的源分支“dev”和目标分支“prod”。因此,我有很多我不想要的从目标到源的代码部分。

在“prod”中保留更改但在“dev”中撤消更改的最佳方法是什么? 谢谢。

【问题讨论】:

  • 解决冲突不会改变任何分支。 Nothing 会更改任何现有提交,因为这是不可能的。向当前分支添加 new 提交 to 正是这样做的:它向当前分支添加了一个新提交。
  • 我怀疑您在工作树中看到和编辑的文件与每次提交中的文件之间存在差异。请记住,分支名称仅包含现有提交的哈希 ID,添加新提交的过程包括 (1) 进行新提交,使其父级是现有提交,然后 (2) 编写新提交的哈希 ID 到当前分支名称中,以便新提交现在包含在分支中。 Merging 使用两个父级构建一个新提交(像往常一样使用快照),以便两个提交链都可以访问。
  • 有关将更改应用于历史提交,然后将该更改合并到 both 分支的实用方法,请参阅Gem Taylor's answer,但请考虑使用Raymond Chen's multipart essay

标签: git merge git-merge-conflict


【解决方案1】:

当你确定你真正想做的事情时,最好先放松一下,然后再试一次,但你只能在你还没有推送更改,或者没有人随后推送更改(并且你有足够的管理员权限)。如果你问得好,人们也许可以在你清理后再次推送他们的更改。

我要解决冲突的方法是考虑让您感到悲伤的 prod 更改与您尝试实施的开发功能更改,并计算出每个分支上的更改,让他们接近同意什么解决方案将是。

基本上首先重构两个代码库,使它们与实际的功能更改兼容,提交,然后提交功能更改。

这可能涉及到最多 4 个分支:

  • 重构的一次性开发
  • 重构的一个重要产品,您将针对广告修复重构
  • 包含该功能的重构开发人员的第二次关闭
  • 重构版本的第二个版本将接收该功能,并且在合并时不会出现问题。

希望您可以保持更改足够干净,以便您可以依次合并每个分支并推送它们。

所有这些都在本地进行,并期待第一阶段的一些迭代,但如果你不推动它,那么很容易退出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多