像大多數人一樣,我在多項目開發中使用git
,許多開發人員和許多更改每天都會傳播到主要分支。很多時候,當我將一個父分支合併到一個功能(或錯誤修復)分支中時,我遇到了幾個我沒有碰到甚至看不到的文件的衝突!Git:如何使用「他們的」未修改的文件,其餘的正常合併?
背景
分公司設置:
git checkout master
git checkout -b myFeatureBranch
比方說,兩個或更多時間的流逝。我的功能代碼現在已準備好進行審查。注意:這裏只使用master
來表示清楚,實際上它是另一個唯一命名的發佈分支。許多其他開發人員將他們的錯誤修復和功能分支合併到master
(他們的代碼評論獲得批准後)。這些變化可能已影響我在我的功能分支中更改過的一個或多個文件。因此,我需要將master
合併到我的分支以獲取所有最新的代碼。
我的問題
我沒有找到一個答案,這個具體的問題。我看着this question其中也指出to this question。有以下這些信息,如果我需要合併master
到我的特性分支,然後按照這個邏輯,我會做:
git checkout myFeatureBranch
git merge -X theirs master
我相信(從man
頁)認爲:
This option forces conflicting hunks to be auto-resolved cleanly by
favoring `their` version.
但這真的不是人們想要的嗎?
如果在我的分支中我沒有觸摸到該文件,那麼是的,這正是我想要的;但是,如果我修改了一個文件(並提交給我的分支),那麼我想要完成正常的合併(和衝突解決)過程。在這種情況下,我不想支持theirs
。以上是否這樣做?如果沒有,是否有一個合併命令可以這樣做?
對於衝突,兩個副本都不必編輯過,如果只有一個副本有共同祖先的變化,那麼不應該有衝突,那是你正在經歷什麼? – jrtapsell
「我碰到了幾個文件,我沒有碰到甚至看到衝突」 - 這意味着無論如何都會觸及文件。如果文件實際上未被修改,它們不會發生衝突。 – max630
[This answer](https://stackoverflow.com/a/18262173/2303202)應該有助於找出你不想改變的文件中的局部變化。 – max630