在使用Git时遇到麻烦了吗?请保持冷静,使用”git reflog”指令
如果发生了Git操作错误,可以通过git reflog进行恢复。
git reflog和git log的区别是什么?
我知道git log、git status等命令是什么,但是git reflog是什么呢?
日志记录了分支的提交历史。 (The log records the commit history of the branch.)
git log会显示与当前分支相关的引用(头部、标签、远程)可访问的精简历史记录。
切换到另一个分支后,将显示不同的提交历史记录。
※ 要查看所有分支的提交历史记录,请输入git log –all。
reflog是本地仓库的历史记录。
git reflog是本地存储库中指定或正在指定的所有提交的本地记录。
每次进行提交或检出操作时都会有一个条目。
因此,在执行“破坏性”操作(如删除分支)时,可以使用git reflog(本地记录默认在90天后修剪)来获取由该分支指示的SHA1哈希值。
安全网
由于reflog可以追踪修改内容和重置的提交,可以通过提交的commit ID返回并找到提交。如果存储库中的旧提交未被删除,则可以恢复在日志中不再显示的项目。当需要恢复误删除的东西时,git reflog有时会成为救命稻草。
找回的篇章
昨天在提交后没有注意到远程推送失败,然后切换到另一个分支进行了硬重置,结果发现丢失了一天的工作。然后我被前辈告知:“如果是Git操作错误的话,也许可以恢复。可以通过git reflog找到提交的哈希值,然后进行checkout等操作…”。
通过以下步骤,我成功恢复了丢失的代码:
显示reflog
PS C:\Users\owner\My-project-root> git reflog
2. 回到提交
PS C:\Users\owner\My-project-root> git checkout x9xx99x
3. 创建一个新分支
PS C:\Users\owner\My-project-root> git switch -c feat-dev
将代码推送到远程仓库
PS C:\Users\owner\My-project-root> git push -f origin feat-dev
5. 救命了!
修剪的有效期限
修剪操作的有效期限是从配置设置”gc.reflogExpire”中获取的,默认为90天。