## 名称

git-merge-file - 运行三路文件合并

## 概要

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

## 描述

`git merge-file`将从`<base-file>`to `<other-file>`导入的所有变化合并到一起`<current-file>`。结果通常会进入`<current-file>`。`git merge-file`对于将单独的更改组合到原始文件非常有用。假设`<base-file>`是原来的，都`<current-file>`和`<other-file>`都进行修改`<base-file>`，然后`git merge-file`结合了变化。

如果两者都发生冲突`<current-file>`并且`<other-file>`在共同的线段中发生变化。如果发现冲突，`git merge-file`通常会输出一个警告，并将冲突与包含<<<<<<<和>>>>>>>标记的行进行括号。典型的冲突将如下所示：

    <<<<<<< A

    lines in file A=======lines in file B>>>>>>> B

如果有冲突，用户应编辑结果并删除其中一个选项。然而，当`--ours`，`--theirs`或`--union`选项有效时，这些冲突分别有利于分别来自`<current-file>`线段`<other-file>`，来自线段或来自两者的线路。冲突标记的长度可以通过`--marker-size`选项给出。

该程序的退出值对错误为负值，否则冲突的数量（如果存在多次冲突，则截断为127）。如果合并是干净的，则退出值为0。

`git merge-file`被设计成是 RCS `merge`也就是的最小克隆；这就说，它实现了 git 所需的所有 RCS `merge`功能[1]。

## 选项

-L <label>

此选项最多可以放三次，并指定标签用于替代冲突报告中的相应文件名。也就是说，`git merge-file -L x -L y -L z a b c`生成的输出看起来好像来自文件x，y 和 z，而不是来自文件a，b 和 c。

-p

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

-q

安静; 不要警告冲突。

--diff3

以“diff3”风格显示冲突。

--ours --theirs --union

而不是在文件中留下冲突，解决有利于我们（或他们或两者）方面的冲突。

## 示例

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

将自 README 后的 README.my 和 README.upstream 的更改结合起来，尝试合并它们并将结果写入 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`。