文章目录
今天莫名其妙上传github,突然间本地文件和远程文件全都没了!!!! 现在很慌么,干了近两个月的工程转眼灰飞烟灭! `git reflog`命令可以拯救你!!!!!让你消失的文件回归!!!!
git reflog # 查看操作日志
#--hard 参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交:
git reset --hard 操作编号 #操作编号即前面的黄色字符串
即可恢复
官方描述
描述
该命令采用各种子命令,并根据子命令采用不同的选项:
引用日志,或“reflogs”,记录分支的提示和其他引用何时在本地存储库中更新。Reflogs 在各种 Git 命令中很有用,用于指定引用的旧值。例如,HEAD@{2}意思是“HEAD 曾经是两步前的位置”,master@{one.week.ago}意思是“master 曾经在这个本地存储库中指向一周前的位置”,等等。有关更多详细信息,请参阅 gitrevisions[7]。
此命令管理记录在 reflogs 中的信息。
"show" 子命令(这也是默认的,在没有任何子命令的情况下)显示命令行中提供的引用的日志(或者HEAD,默认情况下)。reflog 涵盖了所有最近的操作,此外HEADreflog 还记录了分支切换。 git reflog show是git log -g --abbrev-commit --pretty=oneline;的别名 有关更多信息,请参阅git-log[1]。
“expire”子命令会修剪旧的 reflog 条目。早于expiretime 的条目,或早于expire-unreachabletime 且无法从当前提示访问的条目,将从 reflog 中删除。这通常不被最终用户直接使用 - 相反,请参阅 git-gc[1]。
“delete”子命令从 reflog 中删除单个条目。它的参数必须是一个精确的条目(例如“ git reflog delete master@{2}”)。此子命令通常也不由最终用户直接使用。
“exists”子命令检查一个 ref 是否有一个 reflog。如果 reflog 存在,它将以零状态退出,如果不存在,则以非零状态退出。