[英]Rebasing a branch that has been branched from
我試圖切斷一部分存儲庫的歷史記錄,以便按照本文所述使用git replace
將其嫁接到存儲庫中。
本文中描述的案例與我的存儲庫之間的主要區別在於,我的master分支具有現有分支。 在刪除歷史記錄后,我想保持這些分支的布局及其分支點的等效性。
我的歷史大概是這樣的
cut here
|
v
o--o--o--o--o--o--o master
\ \ \
\ \ o--o A
\ o--o--o B
o--o--o C
提交“此處剪切”之前,沒有任何分支脫離主分支。
我要實現的是:
o--o--o history
initial tree at cut
|
v
o--o--o--o--o master
\ \ \
\ \ o--o A
\ o--o--o B
o--o--o C
這意味着僅在初始樹上重新建立master的基礎是不夠的,但是我還需要在master的基礎上重新對所有現有分支進行等效的新提交重播。 我不想只重播新主服務器上的所有分支,因為這可能會有沖突。
是否有任何智能且希望自動執行此操作的方法?
這些命令將為您尋找結果:
git checkout --orphan temp-branch CUT–COMMIT
git commit // This will create your new initial commit
git rev-parse HEAD // To get the SHA of this commit
git replace CUT-COMMIT NEW-COMMIT
git filter-branch -- --all
如果您對如何以及為什么這樣有疑問,請留下評論。 您可能需要先備份存儲庫,然后再執行此類操作。
從過濾分支文檔中 :
注意:此命令支持.git / info / grafts和.git / refs / replace /。 如果定義了任何嫁接或替換引用,則運行此命令將使它們永久化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.