【问题标题】:Git conflict while merging a feature branch after keeping it up to date更新后合并功能分支时发生 Git 冲突
【发布时间】:2017-06-30 14:33:54
【问题描述】:

使用 git “保持特性分支保持最新”的解决方案是,不时将主分支合并到特性分支中,例如,如果在主分支中实现了特性所需的更改分支,对吗?

我做过一次。所以我的历史看起来像:

master feature

now i want to merge
| |
| | file needsToBeChangedForNewFeature.php was changed here again
| |
|/| i get a conflict for each change since this point
| |
| | file needsToBeChangedForNewFeature.php was changed here
| |
|/
|

现在我想最终将此功能分支合并到主分支中,但我在文件“needsToBeChangedForNewFeature.php”中遇到了每行更改两次的冲突(参见 git 历史示例)。

这对我来说似乎有点合乎逻辑,因为 git 无法决定是保留文件的半新版本还是真正的新版本。

总结一下:特性分支中文件的较旧更改与同一特性分支中同一文件的最新更改发生冲突。

但是我怎样才能避免这种情况呢?

非常感谢。

【问题讨论】:

  • 一次合并最多应该给你一个冲突事件,可能是每个文件。 again in the period after the intermediate-merge 是什么意思?
  • 感谢您的快速答复。我已经更新了描述和历史示例。希望现在更清楚了。
  • 文件needsToBeChangedForNewFeature.php 是否被特性分支和主分支都更改了?如果是这样,那么您所看到的是正常的,甚至是预期的。
  • 您是在合并还是重新建立基础?正如蒂姆所说,合并只会导致一次冲突。
  • 它在两个分支中都发生了变化,但是master中的变化只是因为这种中间合并,而不是因为任何“真正的变化”。这正是我想知道的。

标签: git merge merge-conflict-resolution feature-branch


【解决方案1】:

在最终合并之前,master 中的功能应该没有变化,因此不会有任何冲突(除非有人独立开发其他东西)。从您的描述来看,您似乎以某种方式复制了您在 master 中的更改,这是您不应该做的。

【讨论】:

    猜你喜欢
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多