描述bug:
接上篇文章,一个小白的github探索踩坑之路。
就在我以为已经将github拿下,进行最后一步“git push origin master”之后惊现bug “fatal: the remote end hung up unexpectedly
。一如既往开启百度解决bug之路。
原因:这是因为文件太大了,(我的文件确实几十个g)。
自以为是的解决方法: 一个文件一个文件开始传。
想法本身没有错,但是我低估github了,(我这里一直不知道add和commit指令是干什么的。)我以为只是单纯的重复init-add-commit-push操作即可,多次尝试未果后,我开始怀疑,网上搜索一番。。。。。。。。。。。。。。。
果然,原来发现git这玩意并不简单。commit的东西,会一直存在在记录中,除非用git -tf
删除。(而且我这里多次提交的文件均存在了git记录中,文件变得异常大)。为了验证这一点我就使用了
du -d 1 -h
查看哪些文件比较大,果然用于存放仓库信息的.git文件很大很大。
于是我又用以下指令查看历史提交中最大的五个文件。
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
用以下指令重写commit
git filter-branch --force --index-filter 'git rm -rf --cached --ignore-unmatch big-file.jar' --prune-empty --tag-name-filter cat -- --all
做了这步操作后,万万没想到,万万没想到,万万没想到,我的本地代码被删除了,我傻眼了。。。。。。。。。。。
然后开启了恢复代码的一下午。
网上存在的大多数解决方案
大多数解决方案:回滚或者撤销。。。。。。
参考这个博客:
链接: https://www.cnblogs.com/weirwei/p/14170270.html.
但对我不适用。我现在还不知道为什么,但我似乎把工作区和缓存区同时删除了。
最后成功的解决方案:
参考这个博客链接: https://blog.csdn.net/feiyue0823/article/details/119811260.
-
git fsck --lost-found
查看自己最近的一些删除提交
-
git show 08c0b7c87a5654a94f3086d240964346fe081c68
选择一个查看是否是需要恢复的代码。 -
git merge 08c0b7c87a5654a94f3086d240964346fe081c68