簡體   English   中英

如何克服'--ours'的git合並歷史歧義/混淆?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM