2012-12-26 61 views
2

我在分支跑git merge master --no-commit和給定的唯一輸出是這樣的:git中的「automerged」文件是什麼,你如何列出它們?

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

原因該文件,但僅限於該文件被列爲是因爲這是這是在改變的唯一文件兩個分支。對於所有其他文件,其中一個或另一個只是簡單地選擇(「快速轉發」),並且從來沒有真正地從算法意義上合併。

以下是我想通了這一點(這是在提交合並之前完成):

$ 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 
$ 
相關問題