![](/img/trans.png)
[英]How to find merge commits in history done using “git merge -s ours” option?
[英]How to overcome git merge history ambiguity/obfuscation with '--ours'?
我想知道如果用於提供更詳細的文件歷史記錄,特別是對其中合並有任何工具our
改變被保持。 最好用一個例子解釋這個問題。
假設我對master
和一個feature
分支進行了沖突的更改:
git checkout master
<made some change to file.txt>
git commit -a -m "Change on master"
git checkout -b feature
<made conflicting change to file.txt>
git commit -a -m "Change on feature"
如果我將feature
合並到master
並使用git checkout --ours file.txt
保留更改,則與將master
合並到feature
(然后將feature
合並到master
以快速轉發master
)相比, file.txt
會得到不同的結果。 (我知道合並- --ours
有效操作也可能無意中使用了mergetool
。)
在這兩種情況下都使用git log -p
,合並提交不會報告file.txt
任何更改,但是在兩種情況下其內容是不同的。 現在, file.txt
的更改歷史記錄已被混淆,並且很難知道哪個版本在master
版本中。 我可以運行git log -- file.txt
,但是該解決方案無法擴展,並且需要您已經知道哪些文件是錯誤合並的一部分。
如果有人做出了錯誤的合並決定,那么很難追蹤哪些文件保持不變。 否則,如果合並對文件進行了更改,則很容易看到這一點。
如果沖突得到解決,那么它們只是被錯誤地解決了(根據您對此答案的評論),一種查看兩個分支之間file.txt
差異的方法是使用git diff
:
git diff master feature -- file.txt
如果您發布的git diff master feature
沒有任何文件規范,您將看到所有repo文件中的所有差異。 git diff
創新應用程序將使您能夠隔離幾乎所有想要的更改。
否則,最好的選擇可能是合並提交本身。 默認情況下,提交消息將輸出一個沖突部分,建議不要刪除它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.