赞
踩
目录
如果您对GIT不是了解,推荐从头开始看本栏目系列文章。本系统文章包括安装GIT、在命令行创建版本库、GIT分支操作、推送至Github;在IDEA中创建版本库、GIT分支操作、提交Github、提交Gitee、提交Gitlab、安装Gitlab。
当Git仓库中有大文件,然后推送到Gitee时会报错error: File: xxxx,如下图
如果使用了下命令任然不能解决问题,那您可以参考后面的办法。
git rm --cached xxx/bigfile.file
git commit -m xxxxx
复制提示错误的文件号(错误的文件号在前面问题中已经用红线标出,如a4be1305975be5fcb748379b7f6fc0bcacceb3ca),使用git log命令查询是那个文件导致出错(假如是xxx/bigfile.file)。
执行命令:git rev-list --objects --all | grep a4be1305975be5fcb748379b7f6fc0bcacceb3ca
根据文件名(上面查询结果中可以看到,如xxx/bigfile.file)查询出在那些历史版本包含该文件
执行命令:git log --pretty=oneline --branches -- xxx/bigfile.file
执行删除命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch xxx/bigfile.file' --prune-empty --tag-name-filter cat -- --all
执行成功后如下图所示,会删除所有版本中的记录。您可以重复执行第1、2来检验是否删除成功。
执行命令:git push origin master --force
git reflog expire --expire=now --all
git gc --prune=now
1、git rm --cached xxx/bigfile.file
从 Git 的索引中删除 xxx/bigfile.file 文件的跟踪。但不会删除实际的物理文件。也就是说只在git版本库中删除,硬盘上这个文件还在。
rm
:表示删除。--cached
:表示只从 Git 的索引中删除文件,而不删除实际物理文件。xxx/bigfile.file
:表示要删除的文件路径。2、git commit -m xxxxx
将当前更改的提交保存到 Git 的版本历史中。注意这里是本地库,远程库要用git push命令。
commit
:表示提交更改。-m xxxxx
:表示指定提交的消息,xxxxx
是你自定义的提交消息内容。3、git rev-list --objects --all | grep a4be1305975be5fcb748379b7f6fc0bcacceb3ca
在所有对象中搜索与指定哈希值匹配的对象。
rev-list
:列出对象的提交历史。--objects
:显示提交历史中的对象。--all
:在所有分支上搜索对象。|
:管道操作符,将前一个命令的输出传递给后一个命令。grep a4be1305975be5fcb748379b7f6fc0bcacceb3ca
:使用 grep
过滤出包含指定哈希值的对象。4、git log --pretty=oneline --branches -- xxx/bigfile.file
显示包含 xxx/bigfile.file 文件的提交历史。
log
:显示提交日志。--pretty=oneline
:以一行的简洁格式显示提交历史。--branches
:仅显示分支上的提交历史。--
:用于区分选项和路径参数。xxx/bigfile.file
:要显示提交历史的文件路径。5、git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch xxx/bigfile.file' --prune-empty --tag-name-filter cat -- --all
使用指定的过滤器重写 Git 存储库的历史记录。
filter-branch
:重写存储库的历史记录。--force
:强制执行重写操作。--index-filter
:指定对索引进行操作的过滤器。'git rm --cached --ignore-unmatch xxx/bigfile.file'
:要执行的过滤器命令,用于删除指定文件。--prune-empty
:删除空的提交。--tag-name-filter cat
:指定对标签进行处理的过滤器。--
:用于区分选项和路径参数。--all
:对所有引用进行操作。6、git push origin master --force
将本地 master 分支的提交强制推送到名为 origin 的远程存储库。
push
:将本地提交推送到远程存储库。origin
:远程存储库的名称。master
:要推送的本地分支。--force
:强制推送,覆盖远程存储库中的任何冲突或更改。7、git reflog expire --expire=now --all
过期所有引用日志,即清除过去的引用更改历史,只保留当前的引用状态。这有助于减小存储库的大小,并清理不再需要的引用信息。
push
:将本地提交推送到远程存储库。origin
:远程存储库的名称。master
:要推送的本地分支。--force
:强制推送,覆盖远程存储库中的任何冲突或更改。8、git gc --prune=now
运行垃圾收集(garbage collection)并立即删除无用的对象。
gc
:垃圾收集,清理无用的对象。--prune=now
:立即删除不再需要的对象。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。