Git
简体中文 ▾ Topics ▾ Latest version ▾ git-merge-file last updated in 2.43.0

名称

git-merge-file - Run a three-way file merge

概述

git merge-file [-L <当前名称> [-L <基本名称> [-L <另一个名称>]]]
	[--ours|--theirs|--union] [-p|--stdout] [-q|--quiet] [--marker-size=<n>]
	[--[no-]diff3] <当前文件> <基础文件> <另一个文件>

描述

git merge-file 会将从 <基础文件><另一个文件> 的所有改动合并到 <当前文件> 中。合并后的结果通常会放入 <当前文件>git merge-file 可用于合并对原文件的不同改动。假设 <基础文件>`是原文件,而 `<当前文件><另一个文件> 都是对 <基础文件> 的修改,那么 git merge-file 会合并这两处修改。

如果 <当前文件><另一个文件> 在共同的行段中都有改动,就会发生冲突。如果发现冲突,"git merge-file" 通常会输出警告,并用包含 <<<<<<< 和 >>>>>>> 标记的行括弧括住冲突。典型的冲突如下

<<<<<<< A
文件 A 中的某几行
=======
文件 B 中的某几行
>>>>>>> B

如果存在冲突,用户应编辑结果并删除其中一个备选行。 但是,如果使用了 --ours--theirs--union`选项,这些冲突就会分别以 `<当前文件><其他文件> 或两者的行为优先。 冲突标记的长度可以用 --marker-size 选项给出。

如果程序出错,则退出值为负数,否则退出值为冲突数(如果冲突数超过 127,则截断为 127)。如果合并无误,则退出值为 0。

git merge-file 被设计为 RCS merge 的最小克隆;也就是说,它实现了 RCS merge 的所有功能,而这正是 git[1] 所需要的。

选项

-L <label>

这个选项最多可以给出三次,它指定了在冲突报告中用来代替相应文件名的标签。也就是说,git merge-file -L x -L y -L z a b c 产生的输出看起来像是来自文件 x、y 和 z,而不是文件 a、b 和 c。

-p

将结果发送到标准输出,而不是覆盖 <当前文件>

-q

安静;不警告冲突。

--diff3

以 "diff3" 样式显示冲突。

--zdiff3

以 "zdiff3" 样式显示冲突。

--ours
--theirs
--union

与其在文件中留下冲突,不如解决冲突,使冲突有利于我们(或他们或双方)。

实例

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 合并,但使用标签 ac 代替 tmp/a123tmp/c345

GIT

属于 git[1] 文档

scroll-to-top