2014-03-03 190 views
1

鑑於衝突合併收集相關的提交,合併衝突:從衝突文件

  1. 收集是有衝突
  2. 從文件

例的這個名單確定有關提交文件的列表:

MERGE Conflict! 
|\ 
| \ 
| \ 
A B 
|/
|/ 
C 
| 
| 

B和A上的提交都改變了foo.txt,創建了一個con flict。

當B被合併成一個,我希望所有的A或B但是C之前,改變foo.txt的

回答

2

如果我理解正確的問題提交,你要找的所有承諾,受影響給定文件以前樹枝分叉:

你會想搞清楚兩個分支有分歧開始:

git merge-base A B 

這應該讓你提交的哈希值C.

要獲取的未合併的文件列表:

git diff --name-only --diff-filter=U 

那麼你可以這樣做:

git log <hash of C> -- <file path> 

每個未合併的文件中查找提交列表,直至幷包括提交C,即已經影響到該文件。

1

鑑於你以上的歷史,這樣的:

git log A B ^C -- foo.txt 

會告訴你無論是在AB分支,改變了文件foo.txt(我假設C後,你真正想要的提交全部提交,不是之前它 - 但如果你想在C之前提交,你可以做git log C -- foo.txt)。如果您實際上不知道C的散列,則可以使用git merge-branch A B來確定它。如果您想查看每次提交中所做的實際更改,而不僅僅是提交列表,請使用git log -p ...