我不确定这是否是我们面临的Git或IntelliJ问题。假设以下在IntelliJ中使用Git集成:
用户A更改文本文件并提交并将此更改推送到分支 branch1
用户B更改相同的文本文件但在不同的行中并提交到 branch1
用户B获取远程存储库并将远程 branch1 合并到本地 branch1
当前行为:它合并没有任何冲突(因为不同的行?)
通缉行为:弹出冲突解决窗口,用户必须决定是否应用所有无冲突的更改。
但为什么你可能想要这个behvaior?:有时候我们遇到了标记或js文件的麻烦,其中一个开发人员在顶部改变了一些东西(例如删除了一个未使用的函数)而另一个开发人员依赖就此而言。如果您想了解这些休息时间,必须进行非常昂贵的ui测试。特别是如果它只是标记(例如jsf标签,params)
答案 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)
这似乎是你想要的奇怪行为。通过上次编辑,我得到了您想要的原因,但我认为您希望使用工具来解决与工具本身无关的问题。
我没有直接答案,我甚至认为没有强制合并审查的选项。但是,您可以开发一个合并过程,在此过程中,您要求您的同事在合并之前进行差异处理。所以基本上:
git diff REMOTE/BRANCH -- files
正如你所看到的,这个过程变得非常笨拙和缓慢而且它仍然容易出错(如果我删除一行,我通常知道我要删除的内容,如果没有测试被破坏,我可能会被要求查看删除数百个时间,仍然保持它。)
到目前为止,这是我能够建议你的唯一帮助,如果你找到任何方式以更直接的方式实现你的目标,请评论这个答案,或提供你自己的解决方案,我总是很高兴学习一些新东西!