当所有大文件(或所有二进制文件)已经在 git 存储库中时,将所有大文件(或所有二进制文件)导入 git 附件的最佳方法是什么?
我不想丢失我所有的提交,所以我认为只创建一个新的 repo 并在那里初始化附件并不是一个好主意,导入所有文件然后提交。
我还考虑了以下:复制存储库,然后删除git中的所有二进制文件,然后再次导入并添加到附件中。对于多个分支和其中的许多二进制内容,这将是大量的工作。
如果您只是从最近的提交中删除文件并立即开始使用 git-annex,它将可以工作,但您现有的 git 存储库不会变得更小。这是因为您的历史记录仍然包含签入 Git 的所有大文件。
您也许可以git-filter-branch重写您的提交来删除大文件并附加它们,就好像它们一直都在那里一样。该命令可能类似于以下内容。我自己没有测试过这个,因为我没有安装 git-annex,所以你应该克隆你的存储库并首先在那里测试它!
git filter-branch --tree-filter 'find . -size +5M -type f -not -ipath \*.git/\* -print0 | xargs -0 git rm --cached;find . -size +5M -type f -not -ipath \*.git/\* -print0 | xargs -0 git annex add' HEAD
Run Code Online (Sandbox Code Playgroud)
一步一步,希望能做到的是:
git filter-branch --tree-filter '<commands>' HEAD
重写可从 HEAD 访问的所有提交的树。
find . -size +5M -type f -not -ipath \*.git/\* -print0 | xargs -0 git rm --cached;
对于每次提交,在存储库中查找所有大于 5MB 的文件(减去 .git 目录)并将其从索引中删除。
find . -size +5M -type f -not -ipath \*.git/\* -print0 | xargs -0 git annex add
查找存储库中所有大于 5MB 的文件并将其添加到附件中
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |