• git reflog
    可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作),

  • git log
    则不能察看已经删除了的commit记录

具体一个例子,假设有三个commit:

git st:commit3: add test3.c
commit2: add test2.c
commit1: add test1.c

如果执行 git reset --hard HEAD~1 则删除了 commit3,如果发现删除错误了,需要恢复 commit3 就要使用

git reflog HEAD@{0}: HEAD~1: updating HEAD
63ee781 HEAD@{1}: commit: test3:q

63ee781 即是被删除了的 commit3,运行 git log 则没有这一行记录

可以使用 git reset --hard 63ee781 将红色记录删除,则恢复了cmmit3,运行git log后可以看到:

commit3: add test3.c
commit2: add test2.c
commit1: add test1.c

这里也可以使用另外一种方法来实现:git cherry-pick 63ee781

Git log 常用选项

选项 说明
-p 按补丁格式显示每个更新之间的差异
–stat 显示每次更新的文件修改统计信息
–shortstat 只显示 –stat 中最后的行数修改添加移除统计
–name-only 仅在提交信息后显示已修改的文件清单
–name-status 显示新增、修改、删除的文件清单
–abbrev-commit 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
–relative-date 使用较短的相对时间显示(比如,“2 weeks ago”)
–graph 显示 ASCII 图形表示的分支合并历史
–pretty 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)
限制输出长度
除了用 -n 来限制输出 log 的条数,还可以用 --since 和 --until 按照时间作限制。
用 --author 选项显示指定作者的提交,用 --grep 选项搜索提交说明中的关键字。
要得到同时满足这两个选项搜索条件的提交,就必须用 --all-match 选项。
-S 列出那些添加或移除了某些字符串的提交。
可以在 git log 选项的最后指定它们的路径。因为是放在最后位置上的选项,所以用两个短划线 – 隔开之前的选项和后面限定的路径名。

  • 列出所有最近两周内的提交
$ git log --since=2.weeks
  • 想找出添加或移除了某一个特定函数的引用的提交
$ git log -Sfunction_name
  • 2018 年 4 月期间,Junio Hamano 提交的但未合并的测试文件
$ git log --pretty="%h - %s" --author=gitster --since="2018-04-01" --before="2018-05-01" --no-merges -- t/

git reflog 和 git log 的区别相关推荐

  1. 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )

    文章目录 一.查看提交记录 git log 1.查看详细提交记录 2.查看简略提交记录 二.版本回滚 git reset 1.Git 中的版本表示 HEAD~1 2.版本库代码回滚 三.撤销回滚 1. ...

  2. git reflog 时光穿梭机

    目录 一.问题描述 二.解决 一.问题描述 小白花费一周时间做了git log如下所示6个功能. commit的信息就是做了6个功能,每个功能对应一个commit的提交,分别是feature-1 到 ...

  3. git 沙河游戏节点图, 自由沙盒模拟git, 各类交互git命令

    git学习练习总资源链接: https://try.github.io/ (练习已通,有document) 本沙盒游戏教学:https://learngitbranching.js.org/?demo ...

  4. Git——版本回退【git reset / git log / git reflog】

    前言:下面是在版本回退中常用的命令. 1. git log -- 查看版本日志 $ git log   HEAD为当前指向的版本指针.使用git log 查看版本日志后,显示了它们的版本号是一系列SH ...

  5. 【Git学习】使用git reflog 命令来查看历史提交记录并使用提交记录恢复已经被删除掉的分支

    一.问题描述 昨天下午有个同事急急忙忙跑我座位上,要我帮忙,说他刚刚因为手误,将他本地的某个project的某个branch分支删除了,并且也将Gitlab上面的远程分支也删除了.他本来是想发起mer ...

  6. git fetch和git pull的区别_Git实战(实验楼)学习笔记 实验2 基本用法(下)

    一.实验介绍 本节实验为 Git 入门第二个实验,继续练习最常用的 Git 命令. 知识点 对比差异 分布式的工作流程 Git 标签 实验环境 实验环境为 Ubuntu Linux 命令行环境,需要了 ...

  7. 玩转GIT系列之【git pull和git fetch的区别】

    大家都知道,git中从远程的分支获取最新的版本到本地有2个命令,git pull和git fetch.但是,这两个命令究竟有什么区别?使用时候该怎么选择呢?很多人不是很清楚,我自己也不是很清楚.今天就 ...

  8. git reflog and checkout

    用错checkout 了比如想checkout出下面的一个版本,结果用错了 git checkout  8bfd9b1d292 这样会导致HEAD  deatched ,在这个地方修改后commit ...

  9. git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...

    一.可以将git简单的分为三个区域   1.工作区(working directory)    2.暂缓区(stage index)    3.历史记录区(history)    如图: 其中git ...

最新文章

  1. Nature综述——真菌的多样性:真菌的高通量测序及鉴定
  2. Spring Cloud Alibaba:一步一步教你搭建Nacos集群
  3. 对话阿里云叔同:释放云价值,让容器成为“普适”技术
  4. Velocity教程 (zhuan)
  5. linux下rfkill命令管理蓝牙和wifi
  6. 大数据时代,做数据分析报告的基本流程
  7. php清除页面别人挂的马
  8. Android下磁盘分区表损坏,修复分区表,教您硬盘分区表损坏怎么修复
  9. QQ邮箱添加网易邮箱
  10. Nginx反向代理域名映射
  11. Android中ListView错位布局实现(无聊向)
  12. 领导提拔你的原因,只有这点最真实,其他都是瞎扯!
  13. PMP 项目管理(12)项目采购管理 思维导图 解读
  14. MongoDB被黑记录
  15. WPF 使用 Direct2D1 画图入门
  16. 2019年最新网盘搜索引擎汇总
  17. NR-PRACH:prach格式以及时频域情况
  18. js 重置表单 reset form
  19. JKD 下载、安装、配置
  20. WideDeep论文翻译

热门文章

  1. Mac OS GMT安装与使用
  2. git和码云的基本使用
  3. flink-helloword
  4. 绿色版的正则表达式测试工具及正则表达式入门教程
  5. 选做 有五个人围坐在一起,第五个比第四个大2岁;第四比第三大2岁.......第一人10岁,利用递归求第五人
  6. educoder第5关:32位快速加法器设计
  7. 【题解】LOJ6060 Set(线性基)
  8. php底部悬浮广告,底部悬浮通栏可以关闭广告位详解(一)
  9. 利比亚ECTN申请流程
  10. Tc2.0编写俄罗斯方块游戏