Skip to content

git-merge-file ​

运行三方文件合并。

概要 ​

txt
'git merge-file' [-L <current-name> [-L <base-name> [-L <other-name>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	--[no-]diff3] [--object-id] <current> <base> <other>

描述 ​

给定三个文件 <current>、<base> 和 <other>,'git merge-file' 将从 <base> 到 <other> 的所有变更合并到 <current> 中。结果通常写入 <current>。'git merge-file' 对于将对原始文件的单独更改合并在一起很有用。假设 <base> 是原始文件,<current> 和 <other> 都是 <base> 的修改,则 'git merge-file' 合并两个更改。

如果 <current> 和 <other> 在公共行段中都有更改,则发生冲突。如果发现冲突,'git merge-file' 通常输出警告并用包含 <<<<<<< 和 >>>>>>> 标记的行括起冲突。典型的冲突如下所示:

&lt;&lt;&lt;&lt;&lt;&lt;&lt; A
lines in file A
=======
lines in file B
&gt;&gt;&gt;&gt;&gt;&gt;&gt; B

如果存在冲突,用户应编辑结果并删除其中一个替代方案。当 --ours、--theirs 或 --union 选项生效时,这些冲突将分别优先选择 <current> 的行、<other> 的行或两者的行来解决。冲突标记的长度可以通过 --marker-size 选项指定。

如果指定了 --object-id,行为完全相同,只是要合并的内容不是作为文件指定的,而是作为引用 blob 的对象 ID 列表指定的。

此程序的退出值在错误时为负数,否则为冲突数量(如果超过 127 个冲突则截断为 127)。如果合并是干净的,退出值为 0。

'git merge-file' 设计为 RCS 'merge' 的最小克隆;即它实现了 git(1) 所需的 RCS 'merge' 的所有功能。

选项 ​

--object-id ​

:指定要作为当前仓库中的 blob 而不是文件进行合并的内容。在这种情况下,操作必须在有效仓库内进行。 如果指定了 -p 选项,合并后的文件(包括冲突,如果有)照常输出到标准输出;否则,合并后的文件写入对象存储,其 blob 的对象 ID 写入标准输出。

-L <label> ​

:此选项最多可以给出三次,指定在冲突报告中用于替代相应文件名的标签。即 git merge-file -L x -L y -L z a b c 生成看起来来自文件 x、y 和 z 而不是文件 a、b 和 c 的输出。

-p ​

:将结果发送到标准输出而不是覆盖 <current>。

-q ​

:安静;不警告冲突。

--diff3 ​

:以 "diff3" 风格显示冲突。

--zdiff3 ​

:以 "zdiff3" 风格显示冲突。 --diff3 和 --zdiff3 选项默认为 merge.conflictStyle 配置变量的值(参见 git-config(1))。

--ours ​

、--theirs、--union:不是在文件中保留冲突,而是优先选择我们的(或他们的或两者的)行来解决冲突。

--diff-algorithm={patience|minimal|histogram|myers} ​

:在合并时使用不同的差异算法。当前默认值是 "myers",但选择更近期的算法如 "histogram" 可以帮助避免由于不重要的匹配行(如来自不同函数的花括号)导致的错误合并。另请参阅 git-diff(1) --diff-algorithm。

示例 ​

git merge-file README.my README README.upstream ​

:合并 README.my 和 README.upstream 自 README 以来的更改,尝试合并它们并将结果写入 README.my。

git merge-file -L a -L b -L c tmp/a123 tmp/b234 tmp/c345 ​

:将 tmp/a123 和 tmp/c345 与基础 tmp/b234 合并,但使用标签 a 和 c 而不是 tmp/a123 和 tmp/c345。

git merge-file -p --object-id abc1234 def567 890abcd ​

:合并 blob abc1234 和 890abcd 自 def567 以来的更改,尝试合并它们并将结果写入标准输出。

Git ​

git(1) 套件的一部分

基于 CC BY-NC-SA 3.0 许可发布