[英]How can I rebase from specific develop branch commit to specific master branch commit
我有這樣的主分支:
A->B->C->D->E
像這樣的開發分支:
A->B->C->D->E->F->G->H->I
^
|- This should be used
我想將G
應用於D
之上。 我怎樣才能做到這一點?
我嘗試了這個:
git checkout develop
git rebase 82c7b6a
但這給了我合並沖突。
我的主要目標是保留master分支並刪除development分支。
主要: A->B->C->D->G->H->I
我會選擇那一次提交。
git checkout master
git cherry-pick G
git cherry-pick H (EDIT 3)
git cherry-pick I (EDIT 3)
git branch -D develop
編輯
我沒有看到您不想要E。那么它將是:
git checkout master
git reset --hard HEAD^1
git cherry-pick G
git cherry-pick H (EDIT 3)
git cherry-pick I (EDIT 3)
git branch -D develop
編輯2
如@ckruczek所指出的,更多故障安全解決方案將使用rebase交互式。
git checkout master
git reset --hard develop
git rebase -i D
git branch -D develop
並刪除不需要的提交行。
編輯4
由於這是一個歷史重寫,因此使用上層方法可能會遇到嚴重的麻煩。
我會建議一個解決方案,例如:
A->B->C->D->E->!E->G->H->I
要做到這一點:git checkout master git revert E git cherry-pick GHI git branch -D開發
如果您是唯一的用戶,請嘗試此操作。
1. git checkout develop
2. git rebase --onto master~1 F I /* move commits G, H and I on master~1 (D) */
3. git checkout I
4. git rebase master
最后你可以刪除分支發展
7. git branch -D develop
如果您想跳過E
- F
,則可以執行完全顯式的變基:
git rebase --onto master G~1 develop
您將必須解決潛在的沖突。
完成后,您可以移動母版並進行開發:
git push . develop:master
git checkout master
git branch -d develop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.