nze*_*er0 3 git rename mv large-data
我的存储库有大量的大文件.它们主要是数据(文本).有时,由于重构或打包,我需要将这些文件移动到其他位置.
我使用git mv命令"重命名"文件的路径,但似乎效率低,因为提交的大小(实际的差异大小)非常大,相同rm,git add
还有其他方法可以减少提交大小吗?或者我应该将它们添加到.gitignore上传并作为zip文件上传到上游?
谢谢你的答案.
仅供参考,以下一系列命令将导致文件大小 bar
git mv foo bar
git commit -m "modify"
git cat-file -s HEAD:bar
Run Code Online (Sandbox Code Playgroud)
从我认为git做了rm和add.你能告诉我这个信息是否与实际尺寸无关?
按照设计,如果您在Git存储库中移动文件而不更改内容,则创建提交将仅存储新元数据(也称为树对象)以表示新文件位置.由于内容不变,Git不需要创建新的blob对象来存储文件内容.所以"提交大小"应该相当小.
既然你说diff大小很大,我想一些文件内容会随着重定位一起被修改.这将是"提交规模"巨大的原因.
在这两种情况下,您都可以尝试使用该命令缩小.git目录大小 git gc --prune --aggressive
编辑:
git mv foo bar
git commit -m "modify"
git cat-file -s HEAD:bar
Run Code Online (Sandbox Code Playgroud)
这些命令创建了一个新的提交,但是由于foo/bar文件内容没有改变,Git不会存储任何新的提交,而是新的文件名.实际上,在你的例子中,git cat-file -s HEAD:foo在重命名之前和git cat-file -s HEAD:bar之后将给你相同的结果,因为它的内容相同(在.git/objects中相同的blob).我认为你错误地解释了git在内部做的事情.看看Git objets以获得进一步的解释.
请记住,git跟踪内容,而不是文件.