美文网首页
Git 基础操作指北(2 查看历史提交)

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

作者: 小杨不是小羊 | 来源:发表于2018-11-12 15:40 被阅读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 日后并且作者是杨伟业的提交信息
    

    其他章节

    相关文章

      网友评论

          本文标题:Git 基础操作指北(2 查看历史提交)

          本文链接:https://www.haomeiwen.com/subject/ssdcfqtx.html