有沒有什麼辦法可以將分支A合併到B中,並且用B代替B中的任何內容而不管是否存在衝突?覆蓋合併Git中的兩個分支
回答
您可以使用-X
標誌來指定更喜歡哪個,ours
或theirs
。
git merge <branch> -X ours
將始終偏好您當前所在分支的版本,而git merge <branch> -X theirs
會偏好被合併分支的版本。
結帳從man git-merge
下面瞭解更多詳情:
我們
此選項強制衝突的帥哥是自動解決通過支持我們的版本乾淨。來自另一棵與我們不衝突的樹的變化反映到合併結果。對於二進制文件,整個內容都是從我們這邊拿來的。
他們
這是 「我們的」 相反。
所以在你的情況下,運行git merge B -X ours
當分支A
應該做的伎倆!
已發佈的兩個答案(-X ours
和-s ours
)都是正確的,或者等價地,都是錯誤的。這取決於你想要的結果。
下面是一個簡單而具體的例子。假設我們有以下幾點:
O
/ \
... - B M
\ /
T
其中B
是公共基礎犯,O
是「我們」的承諾,T
是「他們的」承諾,並M
是合併後的結果(即我們想要生成)。
進一步假設在提交B
,文件conflict.txt
說:
I am a file
that contains
some text.
另一個文件,README
,完全是空的。
在提交O
時,我們將第二行更改爲that has
而不是that contains
。 (也就是說,我們改變了第二行。)我們根本沒有碰到README
。
在承諾T
,他們改變了第二行閱讀that used to have
。 (That is, they changed the word "contains" to "still contains".) They also added some text to
自述文件`。
現在,如果您要求git將其分支合併到我們的分支中,文件conflict.txt
中將存在衝突,因爲git不知道如何處理衝突的更改。使用-X ours
告訴git:如果發生衝突,請使用我們的版本,所以提交M
將保留我們的更改並放棄其更改。
另一方面,有沒有與README
衝突,因爲我們沒有改變它。他們只有變更了README
。與-X ours
,提交M
將保持其變化。
然而,使用-s ours
,git也會保留我們的版本README
。
根據你的問題,我不清楚這些,或者你想要的第三種非內置替代選項。
- 1. git合併分支覆蓋目的地
- 2. 合併兩個分支的顛覆
- 3. GIT:合併分支兩次
- 4. 合併git分支時停止覆蓋特定的代碼?
- 5. 用git tfs合併兩個TFS分支
- 6. Xcode合併兩個分支Git
- 7. Git,合併兩個遠程分支
- 8. Git:合併兩個遠程分支
- 9. Git合併發行兩個分支
- 10. 我怎麼合併兩個顛覆分支(合併分支7.3至RC分支)
- 11. 合併更改蓋分支到主分支中的git
- 12. Git中的覆蓋分支(Perforce)
- 13. 覆蓋和推進一個Git分支
- 14. Git合併兩個分支並將兩個分支帶到同一層
- 15. git合併 - 合併兩個分支與不同的指針
- 16. Git:合併多個分支
- 17. 如果您將某個分支合併到主分支中,是否合併了分支覆蓋的差異?
- 18. git分支合併
- 19. 合併Git分支
- 20. Git,合併分支git
- 21. 覆蓋使用git的特定分支
- 22. Gitlab合併兩個分支
- 23. 如何合併兩個在git中彼此不同的分支
- 24. GIT中合併2個分支
- 25. git:分享合併兩個分支的工作
- 26. 合併兩個圖像,其是覆蓋
- 27. 在git中合併2個分支忽略中間的分支?
- 28. 的Git分支與合併
- 29. git,合併覆蓋我的更改
- 30. 是否可以覆蓋分支而不是將其合併到Git中?