如果编辑相同的文件但不同的行,如何在Git / IntelliJ中强制手动合并?

时间:2014-06-26 08:29:27

标签: git intellij-idea git-merge merge-conflict-resolution intellij-13

我不确定这是否是我们面临的Git或IntelliJ问题。假设以下在IntelliJ中使用Git集成:

  1. 用户A更改文本文件并提交并将此更改推送到分支 branch1

  2. 用户B更改相同的文本文件但在不同的行中并提交到 branch1

  3. 用户B获取远程存储库并将远程 branch1 合并到本地 branch1

  4. 当前行为:它合并没有任何冲突(因为不同的行?)

    通缉行为:弹出冲突解决窗口,用户必须决定是否应用所有无冲突的更改。

    但为什么你可能想要这个behvaior?:有时候我们遇到了标记或js文件的麻烦,其中一个开发人员在顶部改变了一些东西(例如删除了一个未使用的函数)而另一个开发人员依赖就此而言。如果您想了解这些休息时间,必须进行非常昂贵的ui测试。特别是如果它只是标记(例如jsf标签,params)

2 个答案:

答案 0 :(得分:3)

我不确定这是否是您想要的,但您可以使用git merge命令的--no-commit选项假装合并失败,即使没有冲突。从手册:

With --no-commit perform the merge but pretend the merge failed
and do not autocommit, to give the user a chance to inspect and
further tweak the merge result before committing.

然后,您可以使用git diff --cached选项检查更改,以检查合并的结果; 并使用git checkout选项--ours--theirs接受或拒绝合并引入的更改。

答案 1 :(得分:1)

这似乎是你想要的奇怪行为。通过上次编辑,我得到了您想要的原因,但我认为您希望使用工具来解决与工具本身无关的问题。

我没有直接答案,我甚至认为没有强制合并审查的选项。但是,您可以开发一个合并过程,在此过程中,您要求您的同事在合并之前进行差异处理。所以基本上:

  1. 在本地计算机上进行更改
  2. git diff REMOTE/BRANCH -- files
  3. 要求开发人员审核更改
  4. 如果一切顺利,请提交并推动更改。否则,撤消不需要的更改,并从2开始重复。
  5. 正如你所看到的,这个过程变得非常笨拙和缓慢而且它仍然容易出错(如果我删除一行,我通常知道我要删除的内容,如果没有测试被破坏,我可能会被要求查看删除数百个时间,仍然保持它。)

    到目前为止,这是我能够建议你的唯一帮助,如果你找到任何方式以更直接的方式实现你的目标,请评论这个答案,或提供你自己的解决方案,我总是很高兴学习一些新东西!