非特殊情况 git push -f origin master 不要乱用
操作方法
备份当前工作区的数据
你可以使用git stash等命令备份下现在正在写的代码
1.1在命令行输入git reflog/git log -g
显示所有历史操作,找到你需要的提交(包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录)
QQ截图20211105173105.jpg
2.1 强制回退到当时被删除的commit
git reset --hard <SHA1>
或者
git cherry-pick <SHA1>
直接把当时版本的工作拿回来。不过如果有冲突的话还要处理冲突。
3.1强推上远程分支
git push -f origin <branch>
如果引起commit丢失的原因并没有记录在reflog 中,比如运行了rm -Rf .git/logs/, 因为 reflog 数据是保存在 .git/logs/ 目录下的,这样就没有 reflog 了。
可以使用 git fsck 工具,该工具会检查仓库的数据完整性。如果指定 --full 选项,该命令显示所有未被其他对象引用 (指向) 的所有对象:
image.png
网友评论