簡體   English   中英

重新分支已分支的分支

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

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