设置和配置
获取和创建项目
基本快照
分支和合并
共享和更新项目
检查和比较
修补
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.44.1 → 2.47.0 无更改
- 2.44.0 02/23/24
- 2.43.1 → 2.43.5 无更改
- 2.43.0 11/20/23
- 2.35.1 → 2.42.3 无更改
- 2.35.0 01/24/22
- 2.7.6 → 2.34.8 无更改
- 2.6.7 05/05/17
- 2.1.4 → 2.5.6 无更改
- 2.0.5 12/17/14
摘要
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 通常会输出警告,并在冲突处使用包含 <<<<<<< 和 >>>>>>> 标记的行将其括起来。一个典型的冲突如下所示
<<<<<<< A lines in file A ======= lines in file B >>>>>>> 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”样式显示冲突。
- --ours
- --theirs
- --union
-
不保留文件中的冲突,而是优先考虑我们(或他们或两者)一侧的行来解决冲突。
- --diff-algorithm={patience|minimal|histogram|myers}
-
在合并时使用不同的 diff 算法。当前默认值为“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/b234 合并 tmp/a123 和 tmp/c345,但使用标签
a
和c
代替tmp/a123
和tmp/c345
。 -
git merge-file -p --object-id abc1234 def567 890abcd
-
组合自 def567 以来的 Blob abc1234 和 890abcd 的更改,尝试合并它们并将结果写入标准输出
Git
是 git[1] 套件的一部分