我發現自己經常遇到以下 Git 場景:
- 從主分支,我創建并簽出分支 A
- 在分支 A 上,我做一些作業,創建一些提交等,然后推送我的更改
- 我需要做一些不相關的作業,所以我創建并結帳分支 B
- 我在分支 B 上創建了更多提交并推送
- 我去創建一個 PR,然后……哎呀。我從分支 A 創建了分支 B,所以突然間我的 PR 中有來自分支 A 的所有這些不相關的提交。我需要從主分支創建分支 B。
只是想知道這里最好的作業流程是什么。當然,我可以洗掉分支 B,再次創建它并復制我的提交,但這似乎很乏味。rebase 不是一個選項,因為我已經推送到遠程倉庫。也許我可以恢復從分支 A 到 B 的所有提交?也許我應該在創建分支之前創建一個別名來檢查 main ?
uj5u.com熱心網友回復:
最簡單的解決方案:重新定位到
git rebase具有 on 模式可以完全按照您的意愿進行操作:
git rebase --onto main A B
將從 A 中取出 B 并將其重新定位到 main 上。
如果您在運行此程式時已簽出 B,則無需在該 rebase 命令列上指定它。
Cherry Pick 選項您也可以通過櫻桃挑選操作來完成。
從正確的位置創建一個新分支,從 B 中挑選所有提交到它上面,然后將 B 重置為它。
git checkout main # or where the branch should start from
git checkout -b B-new # pick a new name, you'll need access to both B and B-new
git cherry-pick A..B # cherry pick all commits on B not on A
現在B-new是您首先要創建的分支。您可以只使用新名稱,或者如果您想保留名稱B,請將其重置為B-new:
git checkout B
git reset --hard B-new
并清理,因為您現在不再需要B-new:
git branch -d B-new
但所有這一切都在做 rebase 所做的一切......
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/466867.html
標籤:混帐
