Git命令只播放没有冲突标记的文件?

时间:2012-03-13 03:48:09

标签: git

Bazaar有一个方便的bzr resolve命令,它会递归地将冲突的文件标记为已解决,但前提是它们的冲突标记已被删除。 git是否有等效的命令或脚本?

我的存储库包含缩小的Javascript(我知道跟踪已编译的文件并不理想),这些Javascript经常在合并后发生冲突,即使未缩小的源合并得很干净。它可以通过重新缩小和解决来轻松修复,并且不需要任何手动冲突解决。我的团队正在从Bazaar迁移到Git,我们依靠bzr resolve智能处理带有冲突标记的文件:在缩小后盲目地在项目根目录上运行它是安全的。在将来,我想自动化这个过程并完全从存储库中获取已编译的代码,但是现在我正在寻找一种方法来反映我们在Git中的当前进程。

我知道git diff --check会报告剩余的冲突标记,但在运行git add之前运行它并检查其输出仍然需要额外的努力。并且运行一个寻找冲突标记的预提交钩子是不理想的,除非钩子也可以解除有问题的文件并将它们标记为未解析(我还没有发现如何做)。还有更好的选择吗?

3 个答案:

答案 0 :(得分:1)

您应该尝试git mergetool。它重新运行合并,但它使用您选择的合并工具以交互方式完成,并在您完成后自动分段文件。

答案 1 :(得分:0)

当你在合并或rebase期间在git中遇到冲突时,没有冲突的文件会自动被暂存,它只是你需要担心的冲突文件,即解决冲突并手动分级。无需解析没有冲突标记的文件,它们已经解决。

答案 2 :(得分:0)

解决此类冲突时,您可以使用以下命令之一:

git checkout --theirs <filename>

(或ours代替theirs(如果您更喜欢本地更改)选择正确的版本,甚至自动为整个合并执行:

git merge -s recursive -Xtheirs

(或分别为-Xours

这是一个答案,我在问题中找到了:git merge recursive theirs, how does it work?