簡體   English   中英

預測功能分支在主分支中合並時的合並沖突

[英]Predicting merge conflicts between feature branches when they are merged in the master branch

假設我有一個主分支和 3 個功能分支。 在 sprint 結束時,所有這些功能都已准備就緒,我想將它們全部合並到 master。

merge feature1 into master => OK
merge feature2 into master => OK
merge feature3 into master => CONFLICTS!

沒有向 master 添加任何提交,但仍然存在合並沖突,因為 feature3 與 feature1 和/或 feature2 沖突。

是否有工具可以預測這種合並沖突(查看哪些功能分支會產生合並沖突)? 如果我能預測到這一點,我可以只將 feature1 和 feature3 合並到 master 分支中。

謝謝!

預測合並沖突的方法是進行合並。 1使用臨時分支執行此操作:

git checkout -b test master
git merge feature1
git merge feature2
git merge feature3

如果一切順利,則合並工作。 現在,如果您願意,可以使用此最終合並作為master本身的結果,通過執行快進操作將master向上移動以匹配test

git checkout master
git merge --ff-only test   # --ff-only means "fail if fast-forward is not possible"

或者如果您不想這樣做和/或合並失敗,則只需刪除分支test 如果合並失敗,請使用git merge --abort退出它,如腳注 1 所示,或git reset --hard (執行相同操作)。 然后使用git checkout mastergit branch -D test

git merge --abort          # if needed
git checkout master
git branch -D test

使用上面單獨的test分支的唯一原因是避免在我們完成所有三個合並之前讓master移動。 但是由於分支名稱對每個存儲庫都是私有的,因此沒有任何要求這樣做:您可以只進行合並,然后如果您不喜歡結果,則回滾(使用git reset --hard )到以前的 state 。 只是不要git push提交,或者讓它們可用於git fetch ,直到你得到你喜歡的結果。


1如果您願意,您可以在不提交的情況下進行測試合並,然后使用git merge --abort假裝您從未運行過測試。 但是,當您需要進行多次合並時,這不起作用,就像您的問題一樣。


章魚合並

不過,還有另一種選擇,Git 稱之為octopus merges 。 (注意:您不能使用 GitHub 執行這些操作,並且可能無法使用其他一些 web 接口。)進行章魚合並,將所有三個功能一次組合到master

git checkout master
git merge feature1 feature2 feature3

如果有任何沖突,章魚合並將失敗。

(我從未在實際工作中真正使用過章魚合並。它們無法實現常規合並無法做到的任何事情,而且人們發現它們令人困惑,所以我傾向於堅持使用常規合並。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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