git reflog:记录时光机

QuibblerQuibbler 2020-05-17 约 3 分钟 1844 次阅读

git reflog:记录时光机

比git log更强大的命令使git reflog,可以找到已经删除的commit记录,而普通的log命令无法查询到已被删除或者悬空的commit记录。reflog是git操作的一道安全保障,能够记录几乎所有本地仓库的改变。

1、reflog

管理reflog信息。git reflog根本不遍历HEAD的祖先。它是HEAD所指向的一个顺序的提交列表:它的undo历史。reflog并不是repo(仓库)的一部分,它单独存储,而且不包含在pushes,fetches或者clones里面,它纯属是本地的。


2、可选参数

reflog命令可选参数很多。

2.1、show

git reflog [show] [log-options] [<ref>]

基本上log的参数reflog都能用。参考git log。

2.2、expire 

git reflog expire [--expire=<time>] [--expire-unreachable=<time>]
	[--rewrite] [--updateref] [--stale-fix]
	[--dry-run | -n] [--verbose] [--all [--single-worktree] | <refs>…]

        修剪较旧的引用日志条目。

2.3、delete

       从引用日志中删除单个条目。它的参数必须是一个精确的条目(例如“ git reflog delete master@{2}”)。最终用户通常也不会直接使用此子命令。

3、使用场景

3.1、commit回退

有时候回退到之前的某个提交记录或者rebase,如果忘了回退之前的提交记录commit ID就无法恢复。

git reset --hard HEAD~1

因为这个时候git log只能显示到当前HEAD的commit记录。这个时候就可以使用reflog查看回退之前的commit记录:

git reflog


并且再使用git reset --hard 去恢复之前的状态。

3.2、删除commit找回

已经被删除的commit,log命令找不到的,reflog保存了所有commit记录,可以找回。

参考文档:

        git-reflog Documentation

git reflog

git:git-reflog的用法总结

git reflog 时光穿梭机

相关推荐

git rebase调整commit提交的顺序
Git

git rebase调整commit提交的顺序

git rebase调整commit之间顺序一连提交了几笔commit,想调整一下顺序,把其中一笔提交置顶拿到最前面来,专门修改这一笔提交。当然如果想修改某一笔提交,可以reset到那笔commit,进行修改,完成之后再把之后的提交cherry-pick回去。git log查看提交记录,每笔提交记录太多,可以让每笔提交仅显示一行查看 --oneline。使用git rebase -i进入编辑,之前

1.4w
git blame:显示文件的每行提交记录信息
Git

git blame:显示文件的每行提交记录信息

git blame:显示文件的每行提交记录信息git blame对文件的每行信息都进行注释。能看到关于该行修改的每一次commit的哈希标签、作者和提交日期。Intellij IDEA在打开文件的行数右键点击Annotate显示文件每一行的记录信息。应该用的就是这个命令实现的功能。

5.5k
Git可视化工具:Sublime Merge
Git

Git可视化工具:Sublime Merge

Git可视化工具:Sublime Merge同事推荐了一个Git 可视化客户端:Sublime Merge ,由知名文本编辑器 Sublime Text 开发商打造。自己平时用的则是最好用的Git GUI工具:SourceTree,也体验了下Sublime Merge,用起来还不错。直接点击下载或购买后,安装即可。功能免费,完整功能无限制使用。但是订阅内容(比如更换主题)付费。Sublime Me

2.8k