簡體   English   中英

git-rebase分支,建立在另一個分支之上,在master上

[英]git - rebase branch, built on top of another, on master

我正在處理回購中的功能。 我創建了一個特性分支(比如branch_1 )和另一個分支(比如branch_2之上) branch_1 我曾經在每次更新branch_2時對branch_1進行重新設置,但是現在將branch_1合並到master因此我想將branch_2master ,以便branch_2僅具有自己的更改。 我該怎么做呢? 還是正確的方法還是還有其他方法?

您可以將此分支基於master:

src/myproject (branch2)$ git rebase master

master中包含的任何更改都將被“吞噬”到這些master更改中,並且您將只剩下該分支包含的獨特更改。

永遠不要重新構建功能分支,而是將其與上游合並是非常方便的。 但是,這種假設是您不交付合並而僅交付分支的壓縮內容(因為誰希望所有這些合並都在主服務器上進行,對吧?)。

在大型系統中,最好將這種升級歷史記錄保留在您的開發分支中,因為升級會給您的功能帶來新的問題。 重新設置功能分支可以隱藏導致問題的原因,即使問題當然是相同的。

假設您有分支masterfeat1脫離masterfeat2脫離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被合並到masterHEAD提交的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.

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