看來我最初的提交已經佔用了90%的空間,因爲它意外地獲得了很多媒體文件。有沒有辦法從本地和遠程回購中刪除第一次提交,或者我應該保留這個嗎?我可以從Git倉庫中刪除最初的提交嗎?
13
A
回答
20
聽起來好像您已經與其他許多用戶共享存儲庫。如果是這種情況,那麼你應該可以忍受它。
如果您控制了所有克隆,那麼您可以在修改的根提交之上重新編寫歷史記錄,並刪除意外的文件。請注意,如果其他開發人員已經完成了此分支的工作,則不應該這樣做。
如果您正在重寫歷史記錄,那麼您可以嘗試以下操作。請注意,因爲git會在日誌中記錄HEAD提交最近的日誌(reflogs),所以即使您嘗試使用git gc
或git gc --prune
,大型對象也不會立即從您的存儲庫或其他已存有它們的存儲庫中消失。但是,它將確保任何新的克隆都不會將大型對象作爲主分支歷史記錄的一部分。
假設你的工作目錄是「乾淨」:
# Go back the initial commit
git checkout <SHA1_of_old_root>
# Clean up the index to remove unwanted files, e.g. using git rm <files>
# ...
# Amend the initial commit with the new tree. Note the sha1 of the new commit
git commit --amend
# Go back to the master branch
git checkout master
# Re-apply all the commits onto the new root
git rebase --onto <SHA1_of_new_root> <SHA1_of_old_root>
2
或者您可以使用git filter-branch刪除有問題的文件(見示例部分),但它也改寫歷史。因此,任何基於他/她的代碼在你的舊歷史之上的人都會得到不好的驚喜......
+1
過濾分支也將應付更好(或至少需要更少的交互)如果自根提交以來,對不需要的文件進行了更改跟蹤。 – 2009-02-23 07:42:55
相關問題
- 1. 我可以從git倉庫中刪除整個分支嗎?
- 2. 如何從倉庫中刪除以前的git提交?
- 3. Git倉庫提交
- 4. 如何刪除本地git倉庫中的特定提交?
- 5. 我可以從特定的提交中刪除git-svn元數據嗎?
- 6. 我可以從分支中排除git倉庫中的文件嗎?
- 7. 從git shell中刪除遠程倉庫
- 8. git p4從裸倉庫提交?
- 9. 我可以恢復從未提交的已刪除文件嗎?
- 10. 如何從Git倉庫的所有提交中刪除某些文件?
- 11. 從git倉庫中取出最古老提交
- 12. 刪除本地git倉庫會影響遠程倉庫嗎?
- 13. 如何修改或刪除遠程git倉庫提交?
- 14. 如何從第二個git倉庫中刪除克隆的倉庫倉庫?
- 15. 刪除Git倉庫Gitolite?
- 16. 從git倉庫克隆並提交到新倉庫
- 17. 從Git中刪除陳舊的提交
- 18. 我可以在Gemfile中指定Git倉庫的子路徑嗎?
- 19. 在git倉庫中提交uncommited文件
- 20. 我可以將我的heroku git倉庫導入bitbuket嗎?如何?
- 21. Git - 刪除提交
- 22. 從git倉庫中刪除工作文件,以節省空間
- 23. 我該如何從git倉庫中完全刪除數據?
- 24. 如何在一個git倉庫中找到最新的提交?
- 25. 在Git中刪除提交
- 26. 我可以從克隆SVN倉庫我的項目源到Git倉庫
- 27. 從Git中刪除推送提交
- 28. 從git中刪除大型提交
- 29. 的Git - 拒絕遠程倉庫提交
- 30. git倉庫提交的數量
還有`git rebase --root`。請參閱以下SO答案的詳細信息:http://stackoverflow.com/questions/2246208/change-first-commit-of-project-with-git – MKroehnert 2013-06-03 13:20:51