有沒有辦法在指定提交之前移除所有提交併將該提交用作初始提交?在特定提交之前移除提交
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. 提交之前提交的JQuery模式
- 2. 修改之前提交的提交
- 3. 提交表單之前清除值(不取消提交)
- 4. 在提交新的更改之前更正以前的提交
- 5. 獲得提交的前散列提交,改變特定文件
- 6. 從App Store提交中排除特定iPhone類型提交
- 7. 之前提交表格
- 8. 推之前多次提交
- 9. 如何在提交標記之前提交文件?
- 10. 在提交之前檢查jQuery驗證的表單提交
- 11. 在提交頁面上提交之前進行驗證
- 12. 如何在特定提交之前截斷git歷史記錄?
- 13. 達到某個提交併放棄提交之前的所有提交
- 14. 如何刪除特定的提交?
- 15. 在提交文本之後但在提交之前運行javascript/jquery
- 16. Wicket - 呈現之前提交的東西提交
- 17. 提交之前提交的另一個ipa文件
- 18. Git的用法:「插入」提交之前提交
- 19. Subversion合併提交和前次提交
- 20. 如何在庫之間移動提交?
- 21. 之前提交事件在jqgrid
- 22. 在HTML5驗證之前抓取提交
- 23. 在提交之前驗證WTForm
- 24. Cocos2d,在提交應用程序之前
- 25. Git在合併之前合併提交
- 26. jQuery:在提交之前驗證
- 27. 回到之前在SourceTree中的提交
- 28. 只提交特定字段
- 29. 刪除兩次提交之間的git提交
- 30. 敲除「提交」干擾Razor @ html.beginform提交
我知道我已經看過一個教程在某處做類似的事情......它展示瞭如何讓歷史回購結束於提交X,然後將提交X提交到HEAD並從它們開始新的回購,在X上註釋關於如何訪問歷史回購。 我現在找不到它,但它是可能的。 – Daenyth 2010-06-17 15:41:34