簡體   English   中英

我如何從特定的develop分支提交轉換為特定的master分支提交

[英]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.

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