我正在尝试将一些文件移动到一个单独的存储库,保存其更改的历史记录并尝试节省磁盘空间,因为原始存储库超过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
我理解可能很难理解这个问题,因此您可以按照步骤重现它:
让我添加一些步骤,让您轻松重现问题:
你提到“几个大文件(例如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
在存储库中启用LFSgit lfs track '*.mp3'
.gitattributes
文件并提交git rm --cached *.mp3
git add *.mp3
git commit -m 'Move MP3s to Git LFS'
filter-branch
重写历史记录This guide可能完全值得一读。