区别:如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录,git log则不能察看已经删除了的commit记录.
一、git log
最优的展示历史的命令:git log --pretty=format:"%h - %an %cr : %s" --graph
* cb78cb2 - cocoli 22 hours ago : 解决冲突
* d45f251 - cocoli 2 days ago : ...
|\
| * ecf3b57 - cocoli 2 days ago : 天气组件第一版完成
* | bfff1e2 - cocoli 2 days ago : 删除无用log,完善部分显示顺序
|/
* aaa65db - liyangtao 3 days ago : 天气列表
* c192add - liyangtao 3 days ago : 天气组件 优化显示功能
* b0c5a04 - liyangtao 4 days ago : 修复天气组件更新时间问题
* 8cd0bd6 - cocoli 5 days ago : 加攝氏度
* 3eda0e7 - cocoli 5 days ago : 添加为跟踪文件
|\
| * c1541a2 - cocoli 5 days ago : 天气UI加入
* | 5cadf6c - cocoli 5 days ago : 天气UI加入部分
|/
* cb78cb2 - cocoli 22 hours ago : 解决冲突
git log 查看所有(未被回退)的commit id 和提交的信息
如果觉得太繁琐,在命令后加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息
a.其他参数:
![](/qrcode.jpg)
一 、-p
常用的选项是 -p,用来显示每次提交的内容差异。 你也可以加上 -2 来仅显示最近两次提交:
$ git log -p -2
该选项除了显示基本信息之外,还附带了每次 commit 的变化。
当进行代码审查,或者快速浏览某个搭档提交的commit所带来的变化的时候,这个参数就非常有用了。
二 、--stat
想看到每次提交的简略的统计信息,你可以使用 --stat 选项:
$ git log --stat
--stat 选项在每次提交的下面列出所有被修改过的文件、
有多少文件被修改了
被修改过的文件的哪些行被移除或是添加了。
在每次提交的最后还有一个总结。
三 、--pretty=oneline | full | fuller | short | format
另外一个常用的选项是 --pretty。 这个选项可以指定使用不同于默认格式的方式展示提交历史。
四 、 --graph 显示 ASCII 图形表示的分支合并历史。(结构看着比较舒服)
git log --graph
五 、 -<number> 显示对应数字量的提交信息
git log -2 --graph 以Ascll图表的形式来显示最近2次的提交。
六 、 --before 和 --until 后加日期,表示对应日期之前的提交
git log --until='6 hours ago' 六小时前的所有提交
git log --until='6 hours ago' --graph --pretty=oneline 六小时前的代码提交历史
git log --before='2019-12-1' --graph 对应日期前的提交
七 、 --since, --after 仅显示指定时间之后的提交。
git log --since=2.weeks 从两周前开始后的所有提交
git log --since='6 hours ago' --graph --pretty=oneline 从六小时前开始后的代码提交历史
git log --after ='2019-12-1' --graph 对应日期后的提交
八 、 另一个非常有用的筛选选项是 -S,可以列出那些添加或移除了某些字符串的提交
你想找出添加或移除了某一个特定函数的引用的提交,你可以这样使用:
$ git log -Sfunction_name
二、git reflog(查看所有分支的所有操作记录(包括已经被删除的))
可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)
例如执行:
git reset --hard HEAD~1,退回到上一个版本;
git reset --hard HEAD@{3} 回退到指定版本
git reset --hard b915f40 回退到指定版本(使用缩写commitID)
用git log则是看不出来被删除的commitid,用git reflog则可以看到被删除的commitid,