什么是git中的“automerged”文件,你如何列出它们?

时间:2012-12-26 20:35:03

标签: git git-branch git-merge

我在分支中运行了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.

1 个答案:

答案 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
$