推送提交时,我会读到这个警告:
remote: warning: File cbbf81da77a68297dcb6870025c5bb661c63e226 is 63.25 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
但我不知道这个号码指向的文件是什么。
我已经尝试https://github.com/iluaepidi/widget/blob/cbbf81da77a68297dcb6870025c5bb661c63e226但没有成功。
我怎么知道它是什么文件?
(注意:我已经尝试find -size
并且没有工作)
答案 0 :(得分:2)
您是否尝试过git show <sha>
让git向您展示文件?
您还可以执行git ls-tree -r HEAD | grep <sha>
答案 1 :(得分:1)
如this answer中所述,您可以尝试
git rev-list --objects --all | grep cbbf81da77a68297dcb6870025c5bb661c63e226
没有文件名的直接映射=&gt; Git中的对象SHA,因为多个树(以及多个提交)可以在多个位置引用同一个对象。上面的命令将显示指向该对象的所有文件名。如果没有结果,你可能会认为它是树或提交,或者它未使用。
要检查的两个命令是查看它是什么类型:
git cat-file -t cbbf81da77a68297dcb6870025c5bb661c63e226
如果它指定tree
或commit
,那么某些东西可能非常腐败。否则,如果它指定blob
或错误输出,您可能只是垃圾收集您的存储库以摆脱它。
git gc --prune
如果仍然不起作用,并且您不介意冒着损坏存储库的风险(进行备份!),那么您可以手动删除该对象。
对象存储在查找层次结构中,这意味着在.git/objects
中存在以十六进制格式对应于对象SHA的第一个字节的目录,并且目录的内容是由其SHA命名的目标文件 sans 第一个字节。
因此,在您的情况下,您将删除以下内容:
rm .git/objects/cb/bf81da77a68297dcb6870025c5bb661c63e226
虽然如果你到了这一点,但它高度表示其他错误。
如果您确定违规对象是一个文件,并且该文件位于历史记录中的某个位置,那么您可能会处于还原状态,或者更糟糕的是,这可能是一个令人讨厌的变种。
您必须找到引入该文件的提交,然后运行以下命令的一个:
如果文件是自己在自己的提交中引入的:
git revert <COMMIT>
如果文件是与其他更改一起引入的,请在违规提交之前找到提交:
git rebase -i <PRIOR COMMIT>
然后导航到违规提交行并将pick
替换为edit
,然后编写(保存)并退出编辑器。然后Git将进入rebase模式并检查该特定提交,此时您可以删除有问题的文件。
删除后,请运行以下命令:
git add -A
git commit --amend
git rebase --continue
如果Git成功完成,那么你很高兴。否则,您可能必须在初始引入文件和HEAD之间编辑一些提交,以便从修改该文件的所有提交中删除该文件。