Git Push大文件报错后如何撤回

昨晚在提交一个项目代码时,不小心把数据库备份文件也一起Commit了;到最后Push的时候报错了。最后弄了半天解决了,在此记录下。

如下图,文件有108M。

项目放在第三方托管平台上,根据提示查看了原因。后来看了下像单个文件最大不超过50M。

网上找处理方法,有很多种。比如删除提交过大的文件:git filter-branch --tree-filter 'rm -f 文件名' HEAD 但是这命令我这边执行不行报错:fatal: ambiguous argument 'database_bak.sql.gz'': unknown revision or path not in the working tree.

还有说删除git 缓冲区文件 git rm --cached "文件路径" 我都执行了不行。

还有撤回commit:git reset --soft HEAD^  此命令也无效。

实际做法有两种

第一种撤回Commit。

撤回commit的真正做法应该是

1、先执行git log,查看每次commit的id。首先切换到对应分支目录下。然后:git log

 

 因为出现问题后会尝试各种处理方式,有时候commit会有多次提交。这里要撤回所有本次和大文件提交的commit。

然后依次执行:gti reset 40cf738e636ab0ccfd60cd14b6494fd6a848113b 有多个commit记录id就执行多少次。

等你执行完后,你看git文件状态。你的大文那个绿色勾会消失;证明这文件没有被添加一样。这个时候就已经好了。

当然也可以通过小乌龟图形化的操作,直接撤回到某个提交记录上。具体就是右键show log。然后reset master to this

 

 

第二种回滚到前个版本 revert

git revert -n f330e468edeffe32f7bc8216038b069f21cae169

revert 会回滚到之前提交的某个版本,如果前后两个版本有修改同一个文件;此操作会覆盖上次版本的文件。

posted @ 2020-11-12 15:16  Cfan1236  阅读(126)  评论(0编辑  收藏