所以我正在和一些朋友一起工作,我们都是 git 的新手,其中一个人提交了大量的外部二进制文件,这会减慢存储库的速度,并占用很大的磁盘空间。
我们刚刚开始了这个项目,所以除了一个自述文件之外,其中并没有什么重要的东西。所以我们想做的是将存储库历史清除为当前状态。
So basicly it looks this:
Head -> A -> B -> C total disk size 45 MB, 1 file, 300 deleted files
And we want this:
Head -> A total disk size 1 kB, 1 file, 0 deleted files
显而易见的解决方案是创建一个新的存储库,然后将自述文件复制到新的存储库中。但是,如果有 GIT 命令可以做到这一点,我想学习教育/好奇心。
我一直在尝试使用 Rebase 命令,但它似乎仍然保留旧历史及其数据,这让我感到困惑,因为如果 rebase 不会从存储库中删除数据,那么您最好不要使用它。
我一直在谷歌搜索有关此问题的其他帖子,并且我怀疑您无法使用 git 执行此操作。不过我想确认一下。
是的,它是 github 上的一个远程目录
谢谢你的帮助。
所以对于我的解决方案,我选择这样做:
rebase using tortoisegit
squash all commits
then using git bash:
git reflog expire --all --expire-unreachable=now
git gc --aggressive --prune=now
git push origin master --force
本地存储库历史似乎不想缩小磁盘大小。但是,再次克隆存储库会显示所需的结果和磁盘大小。存储库日志也是如此。
感谢您的帮助。有趣的 Rebase 似乎非常强大。