有沒有辦法在指定提交之前移除所有提交併將該提交用作初始提交?在特定提交之前移除提交
18
A
回答
16
比方說,新的歷史最悠久的提交的哈希值是X,我們可以用「oldroot」和「newroot」暫時:
git checkout -b oldroot X
TREE=`git write-tree`
COMMIT=`echo "Killed history" | git commit-tree "$TREE"`
git checkout -b newroot "$COMMIT"
git rebase --onto newroot oldroot master
# repeat for other branches than master that should use the new initial commit
git checkout master
git branch -D oldroot
git branch -D newroot
git gC# WARNING: if everything's done right, this will actually delete your history from the repo!
這將創建一個「newroot」具有相同的內容爲「oldroot」承諾承諾,但沒有任何父母。然後,它將所有其他分支重新分配到新根,這應該是所有分支的歷史。
編輯:測試和固定;稍晚,精一點
+2
請注意,「Killed History」成爲初始提交的新提交消息。如果你想要別的東西,比如原始信息,就把它放在那裏。 – 2010-06-17 16:26:34
0
更容易的解決辦法是, 考慮最初你的分支有提交主要和你沒有提交第一,現在還沒有一個上第一頂提交第二。所以,你有這樣的:
main->first->second
現在你想對的主要頂部第二上,而不是第一頂部。喜歡的東西:
main->second->first or main->second
你可以簡單地做,
git rebase -i main
這會給你一個交互式shell,你可以重新提交的順序或刪除任何提交您所選擇的。
相關問題
- 1. 在提交之前將提交提交到新分支
- 2. 修改之前提交的提交
- 3. 提交之前提交的JQuery模式
- 4. replaceWith提交之前
- 5. 刪除之前在Git中的提交
- 6. 提交表單之前清除值(不取消提交)
- 7. 混帳:如何刪除歷史特定之前提交
- 8. 在提交新的更改之前更正以前的提交
- 9. 如何編輯以前的提交,並在不刪除git之前的提交?
- 10. 如何在我的提交之前插入已提交的提交,並還原那些已提交的提交?
- 11. 獲得提交的前散列提交,改變特定文件
- 12. 從App Store提交中排除特定iPhone類型提交
- 13. 刪除特定提交明知提交ID
- 14. 更改一個特定提交的名稱,電子郵件和/或日期,*提交之前*提交
- 15. 執行JavaScript之前提交
- 16. PHP訂單之前提交
- 17. 校驗和之前提交
- 18. 之前提交表格
- 19. 預覽之前提交
- 20. 推之前多次提交
- 21. jQuery的表單在IE提交沒有驗證之前提交
- 22. 在提交之前檢查jQuery驗證的表單提交
- 23. 如何在提交標記之前提交文件?
- 24. 在svn上提交之前檢查每個提交
- 25. 在提交頁面上提交之前進行驗證
- 26. 刪除特定之後的所有提交?或者在特定提交時克隆
- 27. 檢查提交是否在提交前第一次提交
- 28. 如何在特定提交之前截斷git歷史記錄?
- 29. 達到某個提交併放棄提交之前的所有提交
- 30. 如何刪除特定的提交?
我知道我已經看過一個教程在某處做類似的事情......它展示瞭如何讓歷史回購結束於提交X,然後將提交X提交到HEAD並從它們開始新的回購,在X上註釋關於如何訪問歷史回購。 我現在找不到它,但它是可能的。 – Daenyth 2010-06-17 15:41:34