[英]git - rebase branch, built on top of another, on master
我正在處理回購中的功能。 我創建了一個特性分支(比如branch_1
)和另一個分支(比如branch_2
之上) branch_1
。 我曾經在每次更新branch_2
時對branch_1
進行重新設置,但是現在將branch_1
合並到master
因此我想將branch_2
為master
,以便branch_2
僅具有自己的更改。 我該怎么做呢? 還是正確的方法還是還有其他方法?
您可以將此分支基於master:
src/myproject (branch2)$ git rebase master
master中包含的任何更改都將被“吞噬”到這些master更改中,並且您將只剩下該分支包含的獨特更改。
永遠不要重新構建功能分支,而是將其與上游合並是非常方便的。 但是,這種假設是您不交付合並而僅交付分支的壓縮內容(因為誰希望所有這些合並都在主服務器上進行,對吧?)。
在大型系統中,最好將這種升級歷史記錄保留在您的開發分支中,因為升級會給您的功能帶來新的問題。 重新設置功能分支可以隱藏導致問題的原因,即使問題當然是相同的。
假設您有分支master
, feat1
脫離master
, feat2
脫離feat1
。
要將feat2
提升到新feat1
請執行以下操作:
git fetch
git checkout origin/feat2
git merge origin/feat1
git push origin feat2
將feat1
提升為新master
將是:
git fetch
git checkout origin/feat1
git merge origin/master
git push origin feat1
但是然后說,由於feat1
已交付給master
因此您想切換到feat2
上游。 沒問題。
git fetch
git checkout origin/feat2
git merge origin/master
git push origin feat2
有幾種可能的解決方案供您請求。 如果您對Mureinik的回答不滿意,可以嘗試使用git cherry-pick
重建分支。 基本上,創建一個新的分支master
,並挑選從住的地方都提交branch_1
被合並到master
到HEAD
提交的branch_2
。 為此,您將必須使用類似以下的命令(假設您位於新分支上):
git cherry-pick branch_2~10 branch_2
假設合並branch_2
后, branch_1
的提交數為10。 branch_2
未指定“ commit back”的數量是分支的最新提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.