查看历史提交
git log
显示最近2次提交的内容差异:
git log -2
只需要提供 SHA-1 起始的大于4个字符就可以获得对应的那次提交,下面的命令是等价的:
git show 1c002dd4b536e7479fe34593e72e6c6c1819e53b
git show 1c002dd4b536e7479f
git show 1c002d
查看HEAD所指的当前版本:
git reset --hard
跳转到指定版本:
#前一个
git reset --hard HEAD^
#离现在最近的第二个
git reset --hard HEAE^^
#离现在最近的第100个
git reset --hard HEAD~100
#指定版本号
git reset --hard <commit_id>
查看引用日志(最近几个月你的 HEAD 和分支引用所指向的历史):
git reflog
在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行为被移除或是添加了:
git log --stat
选项 |
说明 |
-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(后跟指定格式)。 |
指定使用不同于默认格式的方式展示提交历史:
git log --pretty=oneline/short/fulll/fuller
定制要显示的记录格式:
git log --pretty=formt:'%h- %an, %ar : %s'
Table 1. git log --pretty=format 常用的选项 |
|
选项 |
说明 |
%H |
提交对象(commit)的完整哈希字串 |
%h |
提交对象的简短哈希字串 |
%T |
树对象(tree)的完整哈希字串 |
%t |
树对象的简短哈希字串 |
%P |
父对象(parent)的完整哈希字串 |
%p |
父对象的简短哈希字串 |
%an |
作者(author)的名字 |
%ae |
作者的电子邮件地址 |
%ad |
作者修订日期(可以用 --date= 选项定制格式) |
%ar |
作者修订日期,按多久以前的方式显示 |
%cn |
提交者(committer)的名字 |
%ce |
提交者的电子邮件地址 |
%cd |
提交日期 |
%cr |
提交日期,按多久以前的方式显示 |
%s |
提交说明 |
注:作者指实际作出修改的人,提交者指最后将此工作成果提交到仓库的人。
列出某个时间段的提交
git log --since 2.weeks 等同于 git log --after 2.weeks
git log --since 2008.01.15
git log --since 2 years 1day 3minutes ago
显示某个作者的提交
git log --author 'leo han'
Table 3. 限制 git log 输出的选项 |
|
选项 |
说明 |
-(n) |
仅显示最近的 n 条提交 |
--since, --after |
仅显示指定时间之后的提交。 |
--until, --before |
仅显示指定时间之前的提交。 |
--author |
仅显示指定作者相关的提交。 |
--committer |
仅显示指定提交者相关的提交。 |
--grep |
仅显示含指定关键字的提交 |
-S |
仅显示添加或移除了某个关键字的提交 |
想知道hello这行代码是何时加入到文件中的:
git log -S 'hello'
如果想查找匹配某个正则表达式的代码,可以传入这样子的参数 -G"<regex>"
查看merge信息
git log --merges
使用--no-merges来过滤掉这个merge信息:
git log --no-merges