TL; DR:從純理論的角度來看,是有可能的Git的合併過程中的一個文件報告衝突(不重訂)的一個分支進入主如果該文件從未被所有修改的分支(它是直接從主創建的)?Git:在合併源中從未修改過的文件上是否會存在合併衝突?
當我將我的開發分支合併回主人時,我常常遇到文件上的衝突,這些文件對於我來說我不記得曾經修改 - 甚至打開過。所以我想了解是否 - 給定Git如何工作,哪些我不太瞭解 - 這在實際情況下可能是實際可行的,或者如果這是不可能的,那麼我應該關注某些顯然修改工作樹中某些文件的內容沒有我注意到(f.ex.類似Eclipse中的Save Actions,自動格式化,行尾處理等)。
我只是在談論文件衝突,而不是樹衝突,或者其他任何可能涉及文件刪除或重新命名或移動的事情。
這是我的非常簡單的典型的工作流程的例子,例如:It使用用Eclipse(始終是最新的):
)創建從主一個Dev分支;我勾選了「爲推拉配置上游」複選框,並在「拉取時」列表框中選擇「合併」(其他條目爲「重新部署」,「保留合併提交的重新保存」,「交互重新配置」)。
沒有人會致力於該分支,本地和遠程,在所有。只有我和只有一臺電腦。
)我檢查開發分支,並在幾天內我每天都會對其進行更改。每一次提交都使用「提交和推送」而不是「提交」來完成,因爲我希望我的所有提交都始終在遠程分支上。
在某些情況下,我的「提交和推送」的推送部分導致「拒絕 - 不快進」。在這種情況下,執行「Pull」並重復推送解決方案,並且一些同事說,必須先執行Pull以避免Push導致「不快速前進」,這是正常的。但這不是問題。
)現在需要將我的開發分支合併回主。我拉,切換回主,拉,選擇合併,選擇我的本地開發分支,在「合併選項」下我選擇「壁球」,在「快進選項」我離開默認「如果快進,只更新分支指針「(其他選項是」如果快進,創建合併提交「和」如果不是快進,失敗「)。
然後我單擊合併,然後得到「結果:衝突」,我去解決這些衝突,並且在某些情況下,既沒有在「我的」(主)下顯示爲紅色的衝突代碼,也沒有在「他們的「(我的開發部門)是我寫的東西。我從來沒有在任何部分修改過這個文件,但是當把這個文件從未改變過的分支合併到主文件中時,它的變化卻發生了衝突。
所以我的問題是,從純理論的角度來看,Git是否應該在分支合併到主文件時報告文件衝突,儘管該文件在分支上從未被修改過?如果是的話,我的工作流程是否符合上述情況之一?
這不是this的重複,因爲這是關於使用rebase。
我們也遇到了無法解釋的衝突,我認爲我們在本例中對此進行了解釋:有人對其他分支進行了提交。由於其他分支是該產品的舊版本(但仍然保留),因此這一提交與我們最新分支上的代碼不兼容。然而,我們將舊分支合併到較新的分支以帶來錯誤修正,因此從舊分支到我們當前分支完成虛擬合併,使用「我們的策略」忽略更改,然後重新實現。後來的合併在合併到其他分支時產生了衝突。 –
@ LasseV.Karlsen謝謝;我沒有足夠的技巧來判斷這樣的解釋是否表明事實上完全可能,當我的分支合併到主分支中時,對於那些從未在該分支上修改過的文件產生衝突,但它確實聽起來如此,更重要的是,讓我意識到可能有其他團隊成員可以做的事情 - 不是我的分支,而是主人 - 當我將分支合併到主人中時,最終會產生這些無法解釋的衝突;我會試着去理解這種可能性是否真的存在,因爲這可能是真正發生的事情。 – SantiBailors
當我們合併到主分支(您的案例中的主分支)時,我們特別使用'-s our'策略合併了「忽略來自其他分支的更改」。然而,當後來將這個分支合併到一個特性分支中以使其更新以修復我們**引入的合併衝突時,我們也收回了我們特別想要的那個其他分支的所有合併衝突忽視。最終,當這個策略合併之前我們沒有創建更多的功能分支時,問題就消失了,但當它持續時,這是一個痛苦。 –