我在分支中运行了git merge master --no-commit
,唯一的输出是:
Auto-merging path/to/file
Automatic Merge went well; stopped before committing as requested
但是,git diff HEAD --name-status
表示大约有15个文件经过修改(以“M”为前缀)和3个已添加的文件(前缀为“A”)。合并中的所有修改过的文件是否都被视为“Automerged”?那么这个特殊文件的特殊之处在于它会打印为“automerged”而不是其他文件?
更多信息(这是在我提交合并之前):
$ git log --oneline --graph --decorate --all
* ae3f058 (master) synced code from another source.
| * 3bd4147 (HEAD, branchA) blah blah blah
| * f6513f6 random message
| * fcbe65e more messages from commit history
| * 6bc99e2 I like green eggs and ham
|/
| * 1824723 (branchB) This is some other, unrelated branch.
|/
* 5a98fac some stuff right before branching
* 40b05f1 initial commit.
答案 0 :(得分:1)
列出文件和单独该文件的原因是因为这是在BOTH分支中更改的唯一文件。对于所有其他文件,只选择了一个或另一个(“快进”)并且从未在算法意义上真正合并。
这是我如何计算出来的(这是在提交合并之前完成的):
$ git merge-base HEAD MERGE_HEAD
5a12345
$ git diff HEAD 5a12345 --name-only > files_changed_in_HEAD
$ git diff MERGE_HEAD 5a12345 --name-only > files_changed_in_MERGE_HEAD
$ comm -12 files_changed_in_HEAD files_changed_in_MERGE_HEAD > files_changed_in_both
$ cat files_changed_in_both
path/to/file
$