git reflog 和 git log 的区别

简介: git reflog 和 git log 的区别
  • 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/
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
17天前
|
人工智能 数据可视化 开发工具
Git log 进阶用法(含格式化、以及数据过滤)
Git log 进阶用法(含格式化、以及数据过滤)
|
6月前
|
开发工具 git
vscode 查看git提交日志
vscode 查看git提交日志
279 0
|
7月前
|
移动开发 小程序 Linux
【Linux】Linux和Window下\r与\n的区别、git命令行的使用
目录 1. 回车换行符在Window下和在Linux下的区别: 1.1回车换行符: 1. 2.行缓冲区打印: 1.3进度条小程序 :
111 0
|
5月前
|
存储 算法 开发工具
git是什么?git的五个命令,git和svn的区别
git是什么?git的五个命令,git和svn的区别
47 0
|
5月前
|
存储 前端开发 开发工具
git clone -mirror 和 git clone 的区别
git clone -mirror 和 git clone 的区别
|
3月前
|
Shell 开发工具 git
查看 Git 中某个文件的提交历史记录(log)
要查看 Git 中某个文件的提交历史记录(log),你可以使用 `git log` 命令并指定文件名作为参数。以下是一些常用的方法来查看某个文件的 Git log: 1. **查看文件的完整提交历史**: ```bash git log -- <filename> ``` 这里的 `--` 是可选的,用于分隔命令行选项和文件名。 2. **查看文件的简要提交历史**: ```bash git log --oneline -- <filename> ``` --oneline` 选项会以一行显示每个提交,使输出更简洁。 3. **查看文件的提交历史并显示每次提交的差异**: ```
112 0
|
5月前
|
开发工具 git 开发者
百度搜索:蓝易云【Git:Rebase和Merge之间的区别】
综上所述,Rebase和Merge在代码合并方面具有不同的特点和用途。根据具体的情况和个人偏好,选择适合的合并方式能够更好地管理和组织代码。
42 0
|
5月前
|
前端开发 开发工具 git
git rebase 和 git merge的区别?以及你对它们的理解?
git rebase 和 git merge的区别?以及你对它们的理解?
73 1
|
5月前
|
开发工具 git
idea的Terminal终端操作git时, git log的注释乱码问题
最近工作比较清闲, 于是在自己的项目中测试: 假如git reset回滚到之前的版本, 后悔了. 应该如何回撤回回滚, 但是又被一些小问题拌住了...
65 0
|
5月前
|
存储 安全 开发工具
快速入门安装及使用&git与svn的区别&常用命令
快速入门安装及使用&git与svn的区别&常用命令
109 0