[英]Should I use git rebase instead of git merge when I am the only working on the two concerned branches
[英]When I am using Git, should I rebase before I merge?
我正在從事一個大型 Rails 項目,與我合作的團隊正在使用 Github 來管理該項目。 雖然許多更改在本地進行,然后直接推送到我們的開發分支,但當我們要處理非常大的更改時,我們會創建一個分支。 當需要將該分支合並回 develop 時,我經常嘗試在將我的功能分支合並到 develop 之前將 develop 變基回我的功能分支(以防止覆蓋其他人的工作)。 我發現當我這樣做時,我似乎兩次遇到相同的合並沖突。 我在變基時遇到了整個沖突列表,然后在合並時再次遇到了相同的沖突列表。 在將我的功能合並到開發之前,我應該將開發重新設置到我的功能分支中,還是應該將我的功能合並到開發中?
假設我的功能分支稱為“new_feature”。 我將它與“開發”分支合並的過程是這樣的:
git checkout develop
git pull (this is set up on our rig to always pull rebase)
git checkout new_feature
git rebase develop
(lots of merge conflicts ensue)
git checkout develop
git merge -no-ff new_feature
(same set of merge conflicts again)
就好像時間線從我的 rebase 更改導致我的新功能分支一路向后發展鏡像,然后與自身的偽副本發生沖突。
好的,現在這個評論太長了。
解釋手冊( git help rebase
)
Assume the following history exists and the current branch is "new_feature":
A---B---C new_feature
/
D---E---F---G develop
From this point, the result of either of the following commands:
git rebase develop
git rebase develop new_feature
would be:
A'--B'--C' <new_feature
/
D---E---F---G <develop
現在,如果你有沖突,首次運行rebase
后的實際狀態將是
A'--B'--C'--[local state]
/ ^
D---E---F---G new_feature
^ develop
其中[local state]
是您尚未解決的沖突合並。 一旦解決了合並沖突並將已解析的文件添加到索引中,就運行git rebase --continue
:現在你的狀態將是
A'--B'--C'--H <new_feature
/
D---E---F---G <develop
顯然,此時將new_feature合並到develop上可以像這樣快速轉發:
A'--B'--C'--H <new_feature <develop
/
D---E---F---G
但如果不是,你會得到這個
A'--B'--C'--H <new_feature
/ \
D---E---F---G---------------I <develop
從時間軸的角度來看,無論你喜歡哪一個,都不明白為什么要么有問題......除非你從未完成了rebase並解決了與H
的沖突,但我認為git會抱怨這一點。
聽起來像你正在向后使用rebase但它可能只是一個令人困惑的措辭。
我變基的特性分支上開發,然后(在開發)做一個git merge --ff-only feature
。
重新設置您的功能分支,合並它,完成。 在我看來,“在合並之前重新設置功能分支”是最佳實踐。
永遠不要重新開發開發,永遠不要修改主干的歷史記錄(除非您和您的團隊知道自己在做什么)。
Rebase 只是一系列的挑選,從分支的開頭開始。 當你 rebase develop 到 feature 分支時,你實際上把所有的 develop 提交放在了 feature 分支之上,這沒有任何意義。
在合並功能分支后繼續你的工作時,只需從 develop 啟動一個新分支,你就可以開始做下一件事情了。
由於你在同一個問題中指定了“大規模”和“變基”,我建議你不要這樣做。 請改用合並。
在合並中使用--no-ff非常適合保留原始分支點。 我支持使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.