运行'git-mergetool'后要发出什么'git-add'命令?

时间:2013-01-29 00:19:53

标签: git git-merge git-add

我不清楚完成导致冲突的合并所需的正确Git命令序列。我理解一种方法是使用类似

之类的方法来遵循被拒绝的合并
git mergetool
# Then once everything has been fixed
git add ??
git commit -m "Some message"

但是我不清楚git-add命令应该包含什么,以确保最终只提交我最初为被拒绝的合并暂存的文件,并且只提交那些文件。

1 个答案:

答案 0 :(得分:3)

git-mergetool通常会在解决冲突后自动暂存文件。您无需手动运行git-add

但是,为了使用各种工具,git-mergetool将尝试通过检查修改日期来验证文件是否已更新(请参阅check_unchanged())。如果文件已被修改,那么它将检查mergetool的返回码。

某些mergetools可能无法返回正确的退出代码(如果合并'成功',则为0),因此git还提供配置选项mergetool.<tool>.trustExitCode,以防不应该信任。如果将其设置为false,则git将始终询问合并是否成功。

总结:

  1. 您的mergetool应该在合并后将文件保存到磁盘,即使不需要进行任何更改(这不可能,因为它不会是合并冲突)。
  2. 如果您不信任mergetool的退出代码,可以将trustExitCode选项设置为false。
  3. 在实践中,我建议使用git现在支持的其中一个合并实用程序。您可以获取这些here的列表。如果您使用这些工具之一,除了配置git以使用它之外,您不需要任何其他设置,例如:

    git config --global merge.tool p4merge
    

    注意:您可能会在网上找到很多关于这些工具设置的过时文章。例如,我最喜欢的mergetool p4merge首先不是由git本身支持的,并且需要一些手动配置。最近版本的git不再需要这样做。