我已經分叉的倉庫- >創建一個分支- >做出提交併推動改變它- >然後,我從分支A. pull請求 - >分公司A獲得了合併。現在如何在不共享提交歷史的情況下打開多個分支的多個請求?
,我創建的分支B和推提交給它- >由從支路B的拉請求,但這種拉動請求顯示的提交歷史從分支A.開始我只是想表明分支B的提交在裏面。
我已經分叉的倉庫- >創建一個分支- >做出提交併推動改變它- >然後,我從分支A. pull請求 - >分公司A獲得了合併。現在如何在不共享提交歷史的情況下打開多個分支的多個請求?
,我創建的分支B和推提交給它- >由從支路B的拉請求,但這種拉動請求顯示的提交歷史從分支A.開始我只是想表明分支B的提交在裏面。
通常情況下,如果branchA的PR得到批准(默認合併策略),當你爲branchB,創建一個新的PR新PR只會顯示最初提交的branchB。如下圖所示。
A---B---C branchA
/
D---E---F---G master
爲branchA PR默認情況下,合併策略批准後:
I branchB
/
A---B---C branchA
/ \
D---E---F---G---H master
但分支A中的PR是通過壁球合併策略,當你爲支路B創建一個新的PR批准,它將顯示branchA和branchB的所有歷史記錄,因爲branchA並未真正合併到master分支中。顯示如下圖,提交A,B,C和我將在branchB新PR顯示:
I branchB
/
A---B---C branchA
/
D---E---F---G---H’ master
如果不希望新的PR顯示有關branchA歷史,你可以變基branchB(git rebase --onto master branchA branchB
)轉換爲master並創建PR以將branchB合併到master中。
A---B---C branchA
/
D---E---F---G---H’ master
\
I’ branchB
從您的描述來看,這聽起來像是您從分支A上完成的任何位置開始創建分支B.如果您只有一個要保存的提交,那麼解決此問題的最簡單方法可能是挑選。
首先,保存老枝B
:
git branch -m B oldB
然後,切換到主:
git checkout master
更新您的本地master分支:
git pull --ff-only
創建一個新的分支B
來自當前的主人:
git checkout -b B
櫻桃採摘從oldB
你一個承諾:
git cherry-pick oldB
與推動,使拉要求等繼續。
請注意,如果您在oldB
上有多個提交,那麼您必須執行多個cherry選擇或rebase(可以同時執行整個提交序列)。