没有冲突标记的Git命令只暂存文件?

4
Bazaar有一个方便的 bzr resolve 命令,可以递归地将有冲突的文件标记为已解决,但前提是它们的冲突标记已被删除。Git是否有相应的命令或脚本?
我的代码库包含经过最小化的JavaScript(我知道跟踪已编译文件并不理想),即使未经过最小化的源代码合并干净,也经常会发生冲突。重新进行最小化和解决很容易修复,而且不需要手动解决冲突。 我的团队正在从Bazaar迁移到Git,并且我们已经依赖于 bzr resolve 对带有冲突标记的文件进行智能处理:在最小化后,在项目根目录上盲目运行它是安全的。 将来,我想自动化这个过程并完全将编译代码移出代码库,但现在我正在寻找一种在Git中模拟我们当前过程的方法。
我知道 git diff --check 会报告剩余的冲突标记,但在运行 git add 之前运行它并检查其输出仍然需要额外的工作。除非挂钩还可以取消暂存有问题的文件并将其标记为未解决(我还没有发现如何做到这一点),否则运行查找冲突标记的预提交挂钩并不理想。是否有更好的选择?

我添加了一个中间段来解释我的用例:存储库包含整个目录树中编译的文件,可以通过重新编译轻松解决,但是逐个浏览目录树并git add每个文件很繁琐。我想一次性添加它们,而不会同时添加仍然包含冲突的源文件(就像我可以使用bzr resolve一样)。 - Dana
3个回答

1
你应该尝试使用git mergetool。它会重新运行合并,但是会以交互方式进行,并使用你选择的合并工具,在完成后自动暂存文件。

0
当您在合并或变基期间在Git中遇到冲突时,没有冲突的文件将自动暂存,只有存在冲突的文件需要引起关注,即解决冲突并手动暂存它们。无需解决没有冲突标记的文件,它们已经被解决了。

0

当解决这种冲突时,您可以使用以下命令之一:

git checkout --theirs <filename>

(如果您更喜欢本地更改,可以使用ours代替theirs)选择正确的版本,甚至可以通过以下方式自动完成整个合并:

git merge -s recursive -Xtheirs

(或者分别是-Xours)

这是我在问题中找到的答案:git merge recursive theirs, 它是如何工作的?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接