我试图将某些文件移动到单独的存储库中,以保存其更改历史记录,并尝试节省磁盘空间,因为原始存储库超过5 GB但与新存储库相关的文件占用了<50 MB。
因此,我将所有需要移动到新存储库的文件移到了一个单独的分支中,创建了一个新存储库。使用以下git命令,我可以保留历史记录,但是新的存储库占用了与原始存储库相同的磁盘空间:
git remote add originalreporemote **path**
git fetch originalreporemote
git merge originalreporemote/branchwithfilestomove --allow-unrelated-histories
git remote rm originalreporemote
查看新的存储库大小,我发现它的大小与原始存储库的大小相同。这对我来说是多余的,因为将来没有任何情况需要我在新仓库中引用原始仓库的完整历史记录。
我移到新存储库的文件的历史记录应该占用更少的空间。
UPD
我了解可能很难理解该问题,因此您可以按照以下步骤重现该问题:
让我添加一些步骤,使您可以轻松重现该问题:
答案 0 :(得分:0)
您提到的“几个大文件(例如,mp3文件)”使我认为您应该使用Git LFS,尽管您似乎今天没有这样做。这样一来,您就可以保留完整的Git历史记录,同时在Git之外存储较大的Blob,从而减小存储库大小:
Git大文件存储(LFS)在Git内部用文本指针替换了大文件,例如音频样本,视频,数据集和图形,同时将文件内容存储在GitHub.com或GitHub Enterprise等远程服务器上。
我认为这是一种更清洁的解决方案,并且受到GitHub,GitLab和Bitbucket的云产品以及GitHub Enterprise和自托管的GitLab的支持,或者您可以set it up yourself。
简而言之,要转换现有存储库:
git lfs install
git lfs track '*.mp3'
.gitattributes
文件并提交删除并重新添加您的MP3:
git rm --cached *.mp3
git add *.mp3
git commit -m 'Move MP3s to Git LFS'
如果您要“缩小”较早的提交,还必须使用filter-branch
重写历史记录
This guide可能值得全部阅读。