我有一個名為develop的本地跟蹤分支。此分支包含一些我尚未準備好推送的本地提交(稱為 change_1)。換句話說,HEAD -> develop 領先于 origin/develop、origin/HEAD。
我有另一個本地分支,取自開發的前一個化身,它有一組我想發布的不相關的提交,比如 change_2。
會有首選的方法嗎?我正在考慮檢查另一個遠程跟蹤副本 develop (不包含 change_1)并使用 change_2 重新設定它。所以像:
git checkout -b develop_with_no_change_1 --track remotes/origin/HEAD
git checkout change_2
git rebase develop_with_no_change_1
git checkout develop_with_no_change_1
git rebase change_2
git push
git checkout develop
git pull --rebase
uj5u.com熱心網友回復:
git 中的分支只是指向提交的名稱。它們沒有永久的身份,可以隨意移動和重命名。因此,如果您忽略他們當前的名稱,您希望擁有三個分支:
- 代表“已發布”代碼的分支
- 具有一組更改的分支
- 具有另一組更改的分支
您要做的是確保分支 2 和 3 與 1 保持同步,但在其他方面是獨立的。
現在,如果我理解正確,分支 1 和分支 2 都稱為“開發”,這令人困惑。因此,首先將您的本地“develop”分支重命名為“change_1”,因為它實際上是這樣的;您也可以停止它跟蹤遠程“開發”,因為那不是同一個分支:
git branch -m develop change_1
git branch --unset-upstream change_1
現在,您可以創建一個本地分支,其唯一目的是跟蹤遠程“開發”。永遠不要直接承諾!
git fetch origin
git branch develop --track origin/develop
這給了你三個分支:
- “develop”,與遠程“develop”相同,代表發布的代碼
- “change_1”,有一個變化
- “change_2”,有不同的變化
為了確保每個“更改”分支都與“開發”保持同步,請將它們重新定位到它:
git switch change_1
git rebase develop
git switch change_2
git rebase develop
最后,當您想要發布一項更改或其他更改時,將其合并以進行開發,然后推送結果(或者,您使用具有“拉取請求”/“合并請求”功能的遠程 UI,例如 GitHub、GitLab 或位元桶)。
git switch develop
git merge change_2
git push origin develop
合并時,您可以選擇是否進行“快進合并”、創建“合并提交”或“壓縮”更改;有很多關于差異的解釋。
你幾乎肯定不想做的是將開發重新定位到其他任何東西上——你發布的代碼通常應該在提交歷史中“向前”移動,而不是向后或橫向移動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/438263.html
標籤:混帐
