我在本地的代碼:
disableCaching()
setupGoogleMaps()
從遠程更改:
disableCaching()
FirebaseApp.configure()
initializeNotificationService()
setupGoogleMaps()
對我來說,上面添加了兩行似乎很明顯setupGoogleMaps()
但是為什么 git 會提示我手動修復這個沖突呢?

有沒有一種工具可以自動修復那些簡單的沖突?
我已經嘗試過使用魔術圖示來解決簡單的沖突,但在這種情況下這不起作用。

我能夠用這個 repo 重現它:
https://github.com/tolotrasamuel/easy-conflict
git checkout featurebranchgit pull origin/master
uj5u.com熱心網友回復:
有沒有一種工具可以自動修復那些簡單的沖突?
不是真的,不。Git 向您尋求幫助的原因正是“自動”執行合并不起作用。
當您認為 Git 不應該提供幫助時,Git 需要幫助的原因是,在決定大塊頭在哪里時,Git 考慮了不止一條線。你比較
disableCaching()
setupGoogleMaps()
和
disableCaching()
FirebaseApp.configure()
initializeNotificationService()
setupGoogleMaps()
你說“似乎很明顯已經添加了兩行”。但:
這些是對合并的不同且同等加權的貢獻;即,第二個不是放在第一個之上的情況,而是它們都必須以某種方式放在最初存在的東西之上,這只是線
disableCaching。對 Git 來說,第一個代碼中的單行僅算作一個大塊——而且,這樣看來,它顯然與第二個代碼中的同一大塊不同。
在這種情況下,我的建議是:
不要尋找“工具”。只需解決沖突并繼續前進。和
不要為此使用 GUI,只需跳入并手動編輯沖突的文本檔案。我想你會發現這要容易得多。它也更容易理解。
這是我們使用該diff3模式得到的結果:
setupInstabug()
setupAppCenter()
<<<<<<< HEAD
disableCaching()
setupGoogleMaps()
||||||| a19174f
disableCaching()
=======
disableCaching()
FirebaseApp.configure()
initializeNotificationService()
setupGoogleMaps()
>>>>>>> origin/master
中間的那位是我們原來的,也就是 line disableCaching。好的,所以一個分支,你的,想要放
setupGoogleMaps()
在那之后。另一個分支 ,想要master放置
FirebaseApp.configure()
initializeNotificationService()
setupGoogleMaps()
你說,很好,那為什么不兩者都做呢?
但是對于 Git,沒有“兩者”:這是兩個完全不同的東西,可能會在您的行之后添加,因為與以下行一起disableCaching是一個單元。它不像你那樣看待這個。它的意思是,“你想要哪一個:一根線,還是三根線?” 因此,既然您知道這意味著什么——即三行——只需編輯檔案即可:
setupInstabug()
setupAppCenter()
disableCaching()
FirebaseApp.configure()
initializeNotificationService()
setupGoogleMaps()
現在說git add .,然后git merge --continue你就準備好了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/488203.html
標籤:混帐 jetbrains-ide git 合并冲突
