我合併了一些提交到master
,但現在我需要這些更改在一個新的分支和master
恢復到什麼是預合併。移動合併提交回舊分支,恢復主分支並保持更改
這裏的歷史看什麼承諾像現在:
這裏就是我想它是什麼樣子:
我合併了一些提交到master
,但現在我需要這些更改在一個新的分支和master
恢復到什麼是預合併。移動合併提交回舊分支,恢復主分支並保持更改
這裏的歷史看什麼承諾像現在:
這裏就是我想它是什麼樣子:
我沒有看到的差異,但相信我明白這個問題,這是我以前做過的事情。
1)創建新的分支:假設主是當前分支,建立新的分支
c:\git\project> git branch my_new_branch
2)重置主分支。假設您需要退出最後4次提交。
C:\ git的\項目> GIT中的復位 - 硬HEAD〜4
3)上的新的分支的工作
C:\ git的\項目> git的結帳my_new_branch
的 - -hard會導致索引在您要保留的第一次提交時重置,並且所有修改都將丟失。
幾點注意事項: - 如果您已將主更改推送到遠程,則這不會影響遠程。至少在我的網站上,我無法推動重置,您必須與遠程的所有者(或git admin)一起工作才能做到這一點。 -hard還應該清除未跟蹤的文件,至少我讀過的文檔是這麼說的,但我不確定它總是會發生。
如果在合併之後沒有提交,您可以簡單地將主服務器重置爲合併前的提交併繼續處理上一個分支(假設它僅合併而未被刪除)。
如果您在合併之後提交,則必須創建一個分支,然後再恢復合併。
這是第一步。基本上,最終的結果是主人包含所有提交之前我想恢復的提交(上圖中的'3c22fc0',最早的合併),'new_branch'包含之後的所有提交。 驗證分支包含我想要的,然後我只需將'new_branch'重命名爲'master',反之亦然,更改.git/config文件以反映新的遠程分支名稱,然後強制'push'兩個分支。 – AFL