鑑於衝突合併收集相關的提交,合併衝突:從衝突文件
- 收集是有衝突
- 從文件
例的這個名單確定有關提交文件的列表:
MERGE Conflict!
|\
| \
| \
A B
|/
|/
C
|
|
B和A上的提交都改變了foo.txt,創建了一個con flict。
當B被合併成一個,我希望所有的A或B但是C之前,改變foo.txt的
鑑於衝突合併收集相關的提交,合併衝突:從衝突文件
例的這個名單確定有關提交文件的列表:
MERGE Conflict!
|\
| \
| \
A B
|/
|/
C
|
|
B和A上的提交都改變了foo.txt,創建了一個con flict。
當B被合併成一個,我希望所有的A或B但是C之前,改變foo.txt的
如果我理解正確的問題提交,你要找的所有承諾,受影響給定文件以前樹枝分叉:
你會想搞清楚兩個分支有分歧開始:
git merge-base A B
這應該讓你提交的哈希值C.
要獲取的未合併的文件列表:
git diff --name-only --diff-filter=U
那麼你可以這樣做:
git log <hash of C> -- <file path>
每個未合併的文件中查找提交列表,直至幷包括提交C,即已經影響到該文件。
鑑於你以上的歷史,這樣的:
git log A B ^C -- foo.txt
會告訴你無論是在A
或B
分支,改變了文件foo.txt
(我假設C
後,你真正想要的提交全部提交,不是之前它 - 但如果你想在C
之前提交,你可以做git log C -- foo.txt
)。如果您實際上不知道C
的散列,則可以使用git merge-branch A B
來確定它。如果您想查看每次提交中所做的實際更改,而不僅僅是提交列表,請使用git log -p ...
。