区别:如果在回退以后又想再次回到之前的版本,
git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),包括已经被删除的commit记录
git log则不能查看已经删除了的commit记录.
git blame - 显示文件的每一行最后修改的版本和作者(详细内容待加入)
推荐采用的命令(结果简洁明了,非常实用)
--abbrev-commit: hash值commitID简短形式出现
--graph:以ASCII 图形表示的分支合并历史
git log --pretty=oneline --abbrev-commit -<number> // 以一行的形式展示历史,number表示要展示的最近的几条
git log --pretty=format:"%h - %an %cr : %s" --graph -<number> // 以对应格式展示历史记录,graph是以ASCII 图形表示的分支合并历史
git rev-parse branch_name // 775337e59686c0a9b197f9adfbe7afaa744ca7b3 ; 当前最新的commitID
一、git log
git log --pretty=format:"%h - %an %cr : %s" --graph
// 美化日志
git log --graph --oneline --decorate
git log 查看所有(未被回退)的commit id 和提交的信息
如果觉得太繁琐,在命令后加上参数 --pretty=oneline,只会显示版本号和提交时的备注信息
命令总结
1.--oneline
标志来简化日志
git log --oneline
2.显示文件增改行数
git log --stat
3.最近N次的提交
git log -3
4.显示每次提交的内容差异
git log -p
5. 美化日志命令
git log --graph --oneline --decorate
6. 按合并查看
// 查看合并操作的操作记录
git log --merges
// 查看非合并操作的操作记录
git log --no-merges
7.按分支查看
// 查看test分支比master分支多提交了哪些内容
git log master..test
8.按文件查看
// 查看对应文件修改的内容
git log -- <path>
9. 按时间查看
//某个日期之后
git log --since=<date>
git log --after=<date>
//某个日期之前
git log --until=<date>
git log --before=<date>
git log --since="2022.05.15" --until="2022.05.20"
10. 按作者看
// 只看某个人的提交
git log --author="username"
// 搜索多个作者的提交信息(\来对|进行转义)
git log --author="username1\|usernmae2"
a.其他参数:
双点(experiment..master)
这种语法可以让 Git 选出在一个分支中而不在另一个分支中的提交
//想查看在 master 分支中而不在 experiment 分支中的提交
git log experiment..master
git log origin/master..HEAD
1. 这个命令会输出在你当前分支中而不在远程 origin 中的提交
2. 如果你留空了其中的一边, Git 会默认为 HEAD(即当前分支指向)
多点(^ | --not 就是多分支比较,这样好记)
(在任意引用前加上 ^ 字符或者 --not 来指明你不希望提交被包含其中的分支)
git log refA..refB | git log ^refA refB | git log refB --not refA
(等价于在refB且不在refA上的提交)查看哪些提交是被包含在 某些分支中的一个,
但是不在你当前的分支上
git log refA refB ^refC | git log refA refB --not refC
查看所有 被 refA 或 refB 包含的但是不被 refC 包含的提交
git log master..experiment
可以使用 master..experiment 来让 Git 显示这些提交。
也就是“在 experiment 分支中而不在 master 分支中的提交”
三点(master...experiment)
这个语法可以选择出被两个引用中的一个包含但又不被两者同时包含的提交。参数 --left-right,它会显示每个提交到底处于哪一侧的分支。 这会让输出数据更加清晰。 |
二、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,