设置和配置
获取和创建项目
基本快照
分支与合并
共享和更新项目
检查和比较
打补丁
调试
电子邮件
外部系统
服务器管理
指南
管理
底层命令
- 2.44.1 → 2.52.0 无更改
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 无更改
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 无更改
-
2.35.0
2022-01-24
- 2.7.6 → 2.34.8 无更改
-
2.6.7
2017-05-05
- 2.1.4 → 2.5.6 无更改
-
2.0.5
2014-12-17
概要
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>
-
此选项最多可以给出三次,并指定在冲突报告中用于替代相应文件名的标签。也就是说,
gitmerge-file-Lx-Ly-Lzabc生成的输出看起来像是来自文件 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。
示例
gitmerge-fileREADME.myREADMEREADME.upstream-
合并 README.my 和 README.upstream 自 README 以来的更改,尝试合并它们并将结果写入 README.my。
gitmerge-file-La-Lb-Lctmp/a123tmp/b234tmp/c345-
合并 tmp/a123 和 tmp/c345 与基础 tmp/b234,但使用标签
a和c而不是tmp/a123和tmp/c345。 gitmerge-file-p--object-idabc1234def567890abcd-
合并 blob abc1234 和 890abcd 自 def567 以来的更改,尝试合并它们并将结果写入标准输出。