看来我最初的提交已经占用了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