简体中文 ▾ 主题 ▾ 最新版本 ▾ git-merge-index 最后更新于 2.35.0

名称

git-merge-index - 对需要合并的文件执行合并操作

概要

git merge-index [-o] [-q] <merge-program> (-a | ( [--] <file>…​) )

描述

此命令会在索引中查找 <file>(s),如果存在任何合并条目,则将这些文件的 SHA-1 哈希值作为参数 1、2、3 (如果文件不存在则为空参数) 传递,并将 <file> 作为参数 4 传递。这三个文件的文件模式作为参数 5、6 和 7 传递。

选项

--

不再将任何后续参数解释为选项。

-a

对索引中所有需要合并的文件执行合并。

-o

不停止于第一次失败的合并,而是一次性完成所有合并 —— 即使之前的合并返回错误,也继续进行合并,并在所有合并完成后才返回错误码。

-q

不要抱怨合并程序失败(合并程序失败通常表示合并过程中存在冲突)。这适用于可能需要发出自定义消息的“瓷器(porcelains)”接口。

如果 git merge-index 被调用时带有多个 <file>s (或 -a),它会依次处理它们,仅当合并返回非零退出代码时才停止。

通常,这会通过一个脚本运行,该脚本调用 Git 对 RCS 包中 merge 命令的模拟。

发行版中包含一个名为 git merge-one-file 的示例脚本。

警告!警告!警告!Git 的“合并对象顺序”与 RCS merge 程序的合并对象顺序不同。在上述排序中,原始文件位于第一位。但三方合并程序 merge 的参数顺序是让原始文件位于中间。别问我为什么。

示例

torvalds@ppc970:~/merge-test> git merge-index cat MM
This is MM from the original tree.		# original
This is modified MM in the branch A.		# merge1
This is modified MM in the branch B.		# merge2
This is modified MM in the branch B.		# current contents

torvalds@ppc970:~/merge-test> git merge-index cat AA MM
cat: : No such file or directory
This is added AA in the branch A.
This is added AA in the branch B.
This is added AA in the branch B.
fatal: merge program failed

其中后一个示例展示了 git merge-index 一旦有任何操作返回错误就会停止尝试合并(即,cat 对 AA 文件返回了错误,因为它在原始文件中不存在,因此 git merge-index 甚至没有尝试合并 MM 文件)。

GIT

Git[1] 套件的一部分

scroll-to-top