Git 基础操作指北(2 查看历史提交)

2018-11-12  本文已影响0人  小杨不是小羊

注意 如果直接复制命令到命令行可能出现未知问题建议手敲。

查看历史提交

在你进行了若干次提交后,又或者克隆了某个项目,想回顾一下提交历史,可以使用git log 命令进行查看。

git log 

commit 1f619ae53d9d66b29849973eea7e0b28af9b1416 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Thu Nov 8 18:42:26 2018 +0800

    发送上新通知相关

commit ce743449c79841e18637442eface54e45d802a56
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Wed Nov 7 14:41:55 2018 +0800

    后台发送上新消息

commit 1b980726c647e2b2e0e483e054fa454a43f11f15
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Mon Nov 5 17:39:16 2018 +0800

    修改时间选择器

commit 383a74f7caff434f8628e244c3372093af99efb2
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Mon Nov 5 17:36:03 2018 +0800

该命令会以 less 的方式来展示提交记录,最新提交的展示在最上面。

commit    sha-1 校验码
Author    作者姓名 作者邮箱
Date      提交时间
缩进的文本  提交的说明。

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(后跟指定格式)
git log -p

显示更新之间的差异。

commit 6387c9228422ea8171845a1e2285daa872aa5543
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Fri Nov 9 16:00:13 2018 +0800

    修改替换方法

diff --git a/app/Jobs/NewProductAdmin.php b/app/Jobs/NewProductAdmin.php
index 99dc591e..b4b98455 100644
--- a/app/Jobs/NewProductAdmin.php
+++ b/app/Jobs/NewProductAdmin.php
@@ -72,9 +72,6 @@ class NewProductAdmin implements ShouldQueue
 
     public function contentReplace($content, $rule = [])
     {
-        $rule['store_name'] = '店铺名称';
-        $rule['user_name']  = '用户名称';
-
         foreach ($rule as $key => $value) {
             $content = preg_replace('/{{' . $key . '}}/', $value, $content);
         }

- 号表示删除行

+ 号表示新增行

git log --stat

显示每次更新的文件修改统计信息。

commit 724bb519771ac75dbe3da402d485063fb27a23f7 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Fri Nov 9 17:31:17 2018 +0800

    修改发消息方法

 .../Controllers/Admin/Message/NewProductController.php     | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

这次提交 14行改动 7行新增 7行删除

git log --shortstat

只显示 行数修改统计信息。

commit 724bb519771ac75dbe3da402d485063fb27a23f7 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Fri Nov 9 17:31:17 2018 +0800

    修改发消息方法

 1 file changed, 7 insertions(+), 7 deletions(-)

相比 stat 没有具体列出修改文件。

git log --name-only

在提交信息后显示 已修改的文件清单。

commit 724bb519771ac75dbe3da402d485063fb27a23f7 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Fri Nov 9 17:31:17 2018 +0800

    修改发消息方法

app/Http/Controllers/Admin/Message/NewProductController.php

本次提交 NewProductController.php 文件被修改了。

git log --name-status

在提交信息后显示 新增 修改 删除的文件清单。

commit 724bb519771ac75dbe3da402d485063fb27a23f7 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   Fri Nov 9 17:31:17 2018 +0800

    修改发消息方法

M       app/Http/Controllers/Admin/Message/NewProductController.php

本次提交 修改了 NewProductController.php 文件。

M 修改 A 新增 D 删除

git log --abbrev-commit

sha-1 正常40 个字符,加上此参数就只显示前几位字符

commit 724bb519 (HEAD -> feature/admin_data, origin/feature/admin_data)
git log --relative-date

使用较短的相对时间显示 2 weeks ago 两周前

commit 724bb519771ac75dbe3da402d485063fb27a23f7 (HEAD -> feature/admin_data, origin/feature/admin_data)
Author: 杨伟业 <yangweiye@iwork365.com>
Date:   3 days ago

    修改发消息方法

3天前进行提交。

git log --graph

显示 ASCII 图形表示的分支合并历史

*   commit a4785358485368e4c3f49fbb847059ef0241d692 (origin/master, origin/HEAD,master)
|\  Merge: e77e36f3 1f619ae5
| | Author: yangweiye <1415051135@qq.com>
| | Date:   Fri Nov 9 15:24:37 2018 +0800
| | 
| |     Accept Merge Request #449: (feature/admin_data -> master)
| |     Merge Request: 上新消息推送相关
| |     Created By: @yangweiye
| |     Accepted By: @yangweiye
| |     URL: https://coding.net/u/ty-coding/p/activities-activity/git/merge/449
| | 
| * commit 1f619ae53d9d66b29849973eea7e0b28af9b1416
| | Author: 杨伟业 <yangweiye@iwork365.com>
| | Date:   Thu Nov 8 18:42:26 2018 +0800
| | 
| |     发送上新通知相关
| |   
* |   commit e77e36f3254736c16f0cd5eb0cd029cbabe46e51
|\ \  Merge: 4c3559c6 ce743449
| |/  Author: yangweiye <1415051135@qq.com>
| |   Date:   Wed Nov 7 14:46:41 2018 +0800
| |   

比较简陋的显示分支创建、合并操作

log log --pretty

使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。

参数 结果
oneline 每次提交信息一行内显示
short 只显示 commit(sha1)、Author(作者)、title(提交时的描述)
full 显示 commit、Author、Commit(提交者)、title、commit message(完整的提交信息)
fuller 显示 commit、Author、AuthorDate(修改完成时间)、Commit、CommitDate(提交时间)、title、commit message

pretty 参数不止这些,更多还需要自行查手册。

除了以上常用参数还有一个比较关键的参数 format

format 参数

参数 结果
%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

当然 以上 并不是 format 的所有参数,如果你需要更多,还要你自己参考手册。

作者 和 提交者的区分 : 作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。

示例

git log --pretty=onelin
#一行内展示提交记录

git log --pretty=format:"%h - %an,%ar : %s"
#每次提交格式化为 简短哈希字符串 - 作者的名字,修改完成时间 : 提交说明
组合使用
git log --relative-date --abbrev-commit --name-status
#显示时间描述 显示简短的哈希字符串 显示新增、修改、删除的文件清单。

git --shortstat --abbrev-commit
#显示修改、添加、删除的行数统计 显示简短的哈希字符串

限制输出长度

限制可用参数

参数 结果
-(n) 仅显示最近的 n 条提交
-since,-after 仅显示指定时间之后的提交
-until,-before 仅显示指定时间之前的提交
-author 仅显示指定作者相关的提交
-committer 仅显示指定提交者相关的提交

这些参数可用配合上门的格式化一起使用。

git log --relative-date --abbrev-commit --name-status --after="2018-11-01"
#显示 2018-11-01 日后的提交信息,并格式

git log --pretty=format:"%h %an %s" --after="2018-11-01" --author=杨伟业
#显示 2018-11-01 日后并且作者是杨伟业的提交信息

其他章节

上一篇 下一篇

猜你喜欢

热点阅读