精华内容
下载资源
问答
  • git log
    千次阅读
    2021-01-12 16:24:37

    git log 查看提交记录

    1. git log 查看提交历史记录

    2. git log --oneline 或者 git log --pretty=oneline 以精简模式显示

    3. git log --graph 以图形模式显示

    4. git log --stat 显示文件更改列表

    5. git log --author= 'name' 显示某个作者的日志

    6. git log -p filepath 查看某个文件的详细修改

    7. git log -L start,end:filepath 查看某个文件某几行范围内的修改记录

    8. git log --stat commitId 或者 git show --stat commitId 查看某一次提交的文件修改列表

    git diff 文件对比

    1. git diff filepath 工作区与暂存区比较

    2. git diff HEAD filepath 工作区与HEAD ( 当前工作分支) 比较

    3. git diff --staged 或 --cached filepath 暂存区与HEAD比较

    4. git diff branchName filepath 当前分支的文件与branchName 分支的文件进行比较

    5. git diff commitId filepath 与某一次提交进行比较

    git log 有两个高级用法:一是自定义提交的输出格式,二是过滤输出哪些提交.

    格式化 Log 输出

    #只显示提交ID和提交信息的第一行

    git log --oneline

    #知道每个提交关联的分支或者标签

    git log --oneline --decorate

    Diff

    文件名后面 + 和 - 的数量是这个提交造成的更改中增删的相

    更多相关内容
  • 将一个或几个“ git”存储库的“ git log”解析为经过清理和可分发的“ JSON”文件。 为什么? git log是一个很棒的工具。 但是,它的输出不仅令人惊讶地不一致,而且很长,难以扫描和分发。 Gitlogg清除了git log...
  • 节点gitlog Node.JS的Git日志解析器安装npm install gitlog --save用法const gitlog = require ( "gitlog" ) . default ;const options = { repo : __dirname + "/test-repo-folder" , number : 20 , author : "Dom ...
  • git-log-to-json 在json中打印可配置的git日志 安装 $ npm install git-log-to-json 命令行界面 Usage: git-log-to-json|git log-to-json Print a configurable git log in json Options: -h, --help output ...
  • var gitlog = require ( 'gitlog' ) gitlog ( './' , function ( error , commits ) { if ( error ) return console . log ( error ) // Commits is an array of commits objects commits . forEach ( function ...
  • 05★Git入门★查看提交履历_git_log
  • @ nostar / gitlog 初衷 git log方法虽然强大,但是总有些不尽如人意的地方。就--grep的正则支持的是BER和ERE 。我更喜欢自定义一些。 使用方式 请确保命令行可以正常使用git并且当前文件夹下有.git # 本项目安装 ...
  • git log 命令详解

    2022-04-18 16:31:49
    git log 支持多种不同的参数来筛选log,记录下方便查找 tips: 编辑器显示导致双杠“–”,显示像单杠,注意区分,可直接复制参数 参数 说明 -p 按补丁格式显示每个提交引入的差异 –stat 显示每次提交的...

    git log 支持多种不同的参数来筛选log,记录下方便查找

    tips: 编辑器显示导致双杠“–”,显示异常, 注意区分

    参数说明
    -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(用来定义自己的格式)
    - -oneline- -pretty=oneline - -abbrev-commit 合用的简写
    -n仅显示最近的 n 条提交
    - -since, - -after仅显示指定时间之后的提交
    - -until, - -before仅显示指定时间之前的提交
    - -author仅显示作者匹配指定字符串的提交
    - -committer仅显示提交者匹配指定字符串的提交
    - -grep仅显示提交说明中包含指定字符串的提交
    -S仅显示添加或删除内容匹配指定字符串的提交

    关于 git log --pretty=format 常用的选项
    如:git log --pretty=format:"%cn - %an, %H : %s"

    选项说明
    %H提交的完整哈希值
    %h提交的简写哈希值
    %T树的完整哈希值
    %t树的简写哈希值
    %P父提交的完整哈希值
    %an作者名字
    %ae作者的电子邮件地址
    %ad作者修订日期(可以用 --date=选项 来定制格式)
    %ar作者修订日期,按多久以前的方式显示
    %cn提交者的名字
    %ce提交者的电子邮件地址
    %cd提交日期
    %cr提交日期(距今多长时间)
    %s提交说明
    展开全文
  • 想要统计就得有数据源,而 `git log` 命令恰恰就能提供这个数据源,`git log` 本身就是一个显示日志的命令,日志记录的是代码库变化的数据,类似于描述代码库变化的 “史书”,想要描述历史就需要大量的数据支撑,想...


    gitlog

    前言

    随着年龄的增长和知识的积累,最近常常有种豁然开朗的感觉,或者对一个已经存在的事物突然有了新的认识,比如统计这个词很早就接触了,从没考虑过它是什么意思,而这篇总结的题目中用了统计一词,第一感觉应该是汇总、记录的意思,后来去查了词条定义,也确实就是类似的解释,从没有刻意去学这个词的含义,但是在每天的生活中已经潜移默化地归纳、总结出来了。

    想要统计就得有数据源,而 git log 命令恰恰就能提供这个数据源,git log 本身就是一个显示日志的命令,日志记录的是代码库变化的数据,类似于描述代码库变化的 “史书”,想要描述历史就需要大量的数据支撑,想要统计修改的代码行数,只要我们从历史记录中找到需要计算的部分就可以了。

    git log

    在统计之前我们需要先整理数据,杂乱无章的数据不是不能统计,只是计算起来更加的麻烦,所以在统计前需要先将数据规范化,所以我们需要先学习一下 git log 的相关操作。

    我们以 redis 开源库为例,切换到 6.0 分支,提交记录定位到 7bf665f125a4771db095c83a7ad6ed46692cd314,以此为数据源,学习一下git log 的常用的查询方法,其实使用不同的条件查询就是整理、归类数据的过程。

    git log 的用法多种多样,我们主要关心两个大类,分别是条件筛选和显示格式。

    条件筛选

    git log 条件筛选的选项非常多,使用条件筛选的选项会影响显示的提交记录的范围,查找到想要显示的提交记录。

    查询最近几条log

    使用 -number 参数可以查询最近几条提交提交记录:

    $ git log -3
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    commit e15528bf1da1f1232fd08801ad382c915be94662
    Author: Itamar Haber <itamar@redislabs.com>
    Date:   Thu Jul 16 21:31:36 2020 +0300
    
        Adds SHA256SUM to redis-stable tarball upload
    
        (cherry picked from commit 5df0a64d30e7815c0a4a75a80f165fdee0bd1db6)
    

    查询指定作者提交

    使用 --author 参数可以查询指定作者的提交记录:

    Albert@DESKTOP-6746UC3 MINGW64 /d/data/maingit/redis (6.0)
    $ git log -2 --author='Oran Agra'
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    

    查询指定时间段的日志

    这个可选参数比较多,比如 --since--until--before--after 等等,从意思很容易分辨怎么使用:

    查询2020-01-01到2020-04-01的提交记录

    $ git log -2 --after=2020-01-01 --before=2020-04-01
    commit 957e917a84ac9979f18145a4d0b53386f5ce4fd9 (tag: 6.0-rc3)
    Author: antirez <antirez@gmail.com>
    Date:   Tue Mar 31 17:56:04 2020 +0200
    
        Redis 6.0-RC3.
    
    commit ef1b1f01a84e969ea368e7fdbaf0d10615743269
    Author: antirez <antirez@gmail.com>
    Date:   Tue Mar 31 17:41:23 2020 +0200
    
        cast raxSize() to avoid warning with format spec.
    

    恰好逮到了原作者的提交~

    查询1年前的提交记录

    $ git log -2 --until=1.year.ago
    commit 86aade9a024c3582665903d0cc0c5692c6677cfd
    Merge: 89ad0ca56 3bfcae247
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Thu Sep 5 13:30:26 2019 +0200
    
        Merge pull request #6364 from oranagra/fix_module_aux_when
    
        Fix to module aux data rdb format for backwards compatibility with old check-rdb
    
    commit 3bfcae247a1c51788940bd4d2f32751ead451e42
    Author: Oran Agra <oran@redislabs.com>
    Date:   Thu Sep 5 14:11:37 2019 +0300
    
        Fix to module aux data rdb format for backwards compatibility with old check-rdb
    
        When implementing the code that saves and loads these aux fields we used rdb
        format that was added for that in redis 5.0, but then we added the 'when' field
        which meant that the old redis-check-rdb won't be able to skip these.
        this fix adds an opcode as if that 'when' is part of the module data.
    

    查询包含指定描述内容的提交记录

    这里用可以使用 --grep 参数,可以过滤出包含指定内容的提交记录,这里指的是在 commit 描述中筛选符合条件的提交,比如查找提交描述中包含 client 的提交记录:

    $ git log -2 --grep='client'
    commit 0f75036c07db48dfcf605e090216a4447edc38fc
    Author: Wen Hui <wen.hui.ware@gmail.com>
    Date:   Wed Jul 15 05:38:47 2020 -0400
    
        correct error msg for num connections reaching maxclients in cluster mode (#7444)
    
    
        (cherry picked from commit d85af4d6f5fbe9cb9787b81583627cd74b47f838)
    
    commit f89f50dbd06247677b8cb3927cbb88c1b5384061
    Author: Oran Agra <oran@redislabs.com>
    Date:   Tue Jul 14 20:21:59 2020 +0300
    
        diskless master disconnect replicas when rdb child failed (#7518)
    
        in case the rdb child failed, crashed or terminated unexpectedly redis
        would have marked the replica clients with repl_put_online_on_ack and
        then kill them only after a minute when no ack was received.
    
        it would not stream anything to these connections, so the only effect of
        this bug is a delay of 1 minute in the replicas attempt to re-connect.
    
        (cherry picked from commit a176cb56a3c0235adddde33fcbaee2369a5af73e)
    

    查找指定分支的提交记录

    使用 git log 默认查找的是当前分支的提交记录,如果想查询其他分支的记录直接在命令后面加上分支名字就行,比如查询 arm 分支上的提交记录:

    $ git log -2 arm
    commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:07:08 2017 +0000
    
        ARM: Avoid fast path for BITOP.
    
        GCC will produce certain unaligned multi load-store instructions
        that will be trapped by the Linux kernel since ARM v6 cannot
        handle them with unaligned addresses. Better to use the slower
        but safer implementation instead of generating the exception which
        should be anyway very slow.
    
    commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:02:37 2017 +0000
    
        ARM: Use libc malloc by default.
    
        I'm not sure how much test Jemalloc gets on ARM, moreover
        compiling Redis with Jemalloc support in not very powerful
        devices, like most ARMs people will build Redis on, is extremely
        slow. It is possible to enable Jemalloc build anyway if needed
        by using "make MALLOC=jemalloc".
    

    其实在 git 体系中,分支名、commit、标签等拥有几乎相同的含义,所以在很多场景下可以扩展互换,比如 git log 后面加上分支名就可以查询指定分支的提交记录,如果加上 commit 就会查询这个 commit 之前的提交记录,如果加上标签,就可以查询这个标签之前的提交记录,比如我们加一个 commit 试试:

    $ git log -2 7329cc39818a05c168e7d1e791afb03c089f1933
    commit 7329cc39818a05c168e7d1e791afb03c089f1933 (origin/arm, arm)
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:07:08 2017 +0000
    
        ARM: Avoid fast path for BITOP.
    
        GCC will produce certain unaligned multi load-store instructions
        that will be trapped by the Linux kernel since ARM v6 cannot
        handle them with unaligned addresses. Better to use the slower
        but safer implementation instead of generating the exception which
        should be anyway very slow.
    
    commit 4e9cf4cc7ed4b732fc4bb592f19ceb41d132954e
    Author: Salvatore Sanfilippo <antirez@gmail.com>
    Date:   Sun Feb 19 15:02:37 2017 +0000
    
        ARM: Use libc malloc by default.
    
        I'm not sure how much test Jemalloc gets on ARM, moreover
        compiling Redis with Jemalloc support in not very powerful
        devices, like most ARMs people will build Redis on, is extremely
        slow. It is possible to enable Jemalloc build anyway if needed
        by using "make MALLOC=jemalloc".
    

    因为 commit id 就是之前的 arm 分支最新的记录,所以这个命令等价于 git log -2 arm

    查询指定 commit 之间的提交记录

    如果想查询两个 commit 之前的提交记录,可以将两个 commit id 依次放在命令后面并用 .. 连接就可以了,格式为 git log commit1..commit2,需要注意的是这样查询出来的提交记录列表中不包含 commit1,其实列举出的就是 commit1 之后又做了哪些修改提交。

    $ git log e15528bf1da1f1232fd08801ad382c915be94662..7bf665f125a4771db095c83a7ad6ed46692cd314
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    

    这个特性有一个应用就是在 merge 分支之前可以查询究竟会 merge 哪些记录,常见的用法比如 git log feature..dev 就是列举出 feature 分支合并到 dev 分支将要合并的提交记录有哪些。

    $ git log 6.0..unstable
    commit 324e22accf457edc996971bc97f5474349cd7c4c (unstable)
    Author: antirez <antirez@gmail.com>
    Date:   Fri Dec 20 12:29:02 2019 +0100
    
        Fix ip and missing mode in RM_GetClusterNodeInfo().
    

    查询指定文件的提交记录

    查询指定文件的提交记录一般直接在 git log 命令后面跟上文件名就可以,但是为了避免和分支名产生分歧,所以通常在文件名前面加上 -- 用来区分,-- 这个标识符就是用来防止混淆的,放在 -- 前面的是分支名,放在后面的是文件名,相同的作用不仅仅在 git log 命令中,在其他命令比如 git checkout 中也有相同的用法。

    $ git log -2 -- redis.conf
    commit 7a536c2912be1fd9f62b26b7022a00644c88ef8b
    Author: Yossi Gottlieb <yossigo@users.noreply.github.com>
    Date:   Fri Jul 10 11:33:47 2020 +0300
    
        TLS: Session caching configuration support. (#7420)
    
        * TLS: Session caching configuration support.
        * TLS: Remove redundant config initialization.
    
        (cherry picked from commit 3e6f2b1a45176ac3d81b95cb6025f30d7aaa1393)
    
    commit 8312aa27d47c0befcf69eb74d0a5dc19745ffd32
    Author: antirez <antirez@gmail.com>
    Date:   Mon Jun 22 11:21:21 2020 +0200
    
        Clarify maxclients and cluster in conf. Remove myself too.
    
        (cherry picked from commit 59fd178014c7cca1b0c668b30ab0d991dd3030f3)
    

    显示格式

    git log 除了可以筛选提交记录,还可以控制显示格式,普通不加参数,会显示作者、邮件、提交描述信息、日期等信息。

    $ git log -1
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    

    通过添加参数可以控制和改变显示格式,下面来看几条常见的

    显示单行信息

    git log 默认会显示多行信息,使用 --oneline 后每条提交记录只显示一行信息,可以在一屏幕中查看到更多的信息

    $ git log -10 --oneline
    7bf665f12 (HEAD -> 6.0, tag: 6.0.6, origin/6.0) Redis 6.0.6.
    a5696bdf4 Run daily CI on PRs to release a branch
    e15528bf1 Adds SHA256SUM to redis-stable tarball upload
    e28aa99af Support passing stack allocated module strings to moduleCreateArgvFromUserFormat (#7528)
    305143004 Send null for invalidate on flush (#7469)
    29b20fd52 Notify systemd on sentinel startup (#7168)
    5b3668121 Add registers dump support for Apple silicon (#7453)
    0f75036c0 correct error msg for num connections reaching maxclients in cluster mode (#7444)
    b1a01fda9 Fix command help for unexpected options (#7476)
    83f55f61a Refactor RM_KeyType() by using macro. (#7486)
    

    显示每条记录中文件修改的具体行数和行体统计

    使用 --stat 参数就可以显示每条记录的中修改文件的具体行数和行数统计

    $ git log -2 --stat
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
     00-RELEASENOTES | 245 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
     src/help.h      |   4 +-
     src/version.h   |   2 +-
     3 files changed, 248 insertions(+), 3 deletions(-)
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
     .github/workflows/daily.yml | 6 ++++--
     1 file changed, 4 insertions(+), 2 deletions(-)
    

    显示每条提交记录中文件的增加行数和删除行数

    使用 --numstat 参数会把 --stat 参数中合并显示的修改行数拆分成增加行数和删除行数

    $ git log -2 --numstat
    commit 7bf665f125a4771db095c83a7ad6ed46692cd314 (HEAD -> 6.0, tag: 6.0.6, origin/6.0)
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 14:00:20 2020 +0300
    
        Redis 6.0.6.
    
    245     0       00-RELEASENOTES
    2       2       src/help.h
    1       1       src/version.h
    
    commit a5696bdf4f2687ab45f633ccb7cdc4ee9c2f957d
    Author: Oran Agra <oran@redislabs.com>
    Date:   Sun Jul 19 15:33:21 2020 +0300
    
        Run daily CI on PRs to release a branch
    
    4       2       .github/workflows/daily.yml
    

    依次罗列各提交记录中每个文件中增加的行数和删除的行数

    要想达到这个目的需要用到 --prety=tformat: --numstat 参数,这样的显示格式便于统计

    $ git log -2 --pretty=tformat: --numstat
    245     0       00-RELEASENOTES
    2       2       src/help.h
    1       1       src/version.h
    4       2       .github/workflows/daily.yml
    

    统计修改的代码行数

    有了前面的铺垫,想要统一修改的行数就容易了,只要配合 awk 工具就可以完成统计了

    $ $ git log -2 --pretty=tformat: --numstat  | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
    added lines: 252 removed lines: 5, diff lines: 247
    

    还可以统计两个分支相差的代码行数

    $ git log 6.0..unstable --pretty=tformat: --numstat  | awk '{adds += $1; subs += $2; diffs += $1 - $2} END {printf "added lines: %s removed lines: %s, diff lines: %s\n", adds, subs, diffs}'
    added lines: 5 removed lines: 2, diff lines: 3
    

    到这里可以发现前面的知识都可以用上,前面筛选的参数变了,得到的结果就变了,我们可以根据需求来调整不同的参数

    总结

    • git log 就是一部代码库记录的“史书”,对于曾经所做的修改可以做到有史可查
    • git log 的选项参数可以分为筛选参数和格式参数,筛选参数可以选择记录范围,格式参数可以控制显示样式
    • 统计就是按照一定规律来将数据进行汇总,在进行汇总前需要将数据进行整理,这样汇总的工作才会更加顺利

    ==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

    慌慌张张,匆匆忙忙,原来生活就是这样~

    展开全文
  • 文章目录1、`git clone`2、`git log`3、`git log -p`4、`git log --stat`5、`git log --pretty=oneline`6、`git log --pretty=short`7、`git log --pretty=full`8、`git log --pretty=fuller`9、定制记录的显示格式...


    在提交了若干更新,又或者 clone了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的工具是 git log 命令。

    1、git clone

    我们使用一个非常简单的 “simplegit” 项目作为示例:

    位置:https://github.com/schacon/simplegit-progit
    在这里插入图片描述
    运行下面的命令获取该项目:

    git clone https://github.com/schacon/simplegit-progit
    在这里插入图片描述

    2、git log

    当你在此项目中运行 git log 命令时,可以看到下面的输出:
    在这里插入图片描述

    Git(4)-- 如何退出 git log 和 git commit 状态

    不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面。 正如你所看到的,这个命令会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明。

    git log 有许多选项可以帮助你搜寻你所要找的提交, 下面我们会介绍几个最常用的选项。

    3、git log -p

    其中一个比较有用的选项是 -p--patch ,它会显示每次提交所引入的差异(按 补丁 的格式输出)。 你也可以限制显示的日志条目数量,例如使用 -2 选项来只显示最近的两次提交:
    在这里插入图片描述

    该选项除了显示基本信息之外,还附带了每次提交的变化。 当进行代码审查,或者快速浏览某个搭档的提交所带来的变化的时候,这个参数就非常有用了。 你也可以为 git log 附带一系列的总结性选项。 比如你想看到每次提交的简略统计信息,可以使用 --stat 选项:

    4、git log --stat

    在这里插入图片描述
    正如你所看到的,--stat 选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了。 在每次提交的最后还有一个总结。

    5、git log --pretty=oneline

    另一个非常有用的选项是 --pretty。 这个选项可以使用不同于默认格式的方式展示提交历史。 这个选项有一些内建的子选项供你使用。 比如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用。 另外还有 shortfullfuller 选项,它们展示信息的格式基本一致,但是详尽程度不一:
    在这里插入图片描述

    6、git log --pretty=short

    在这里插入图片描述

    7、git log --pretty=full

    在这里插入图片描述

    8、git log --pretty=fuller

    在这里插入图片描述

    9、定制记录的显示格式:git log --pretty=format

    最有意思的是 format ,可以定制记录的显示格式。 这样的输出对后期提取分析格外有用——因为你知道输出的格式不会随着 Git 的更新而发生改变:

    在这里插入图片描述
    git log --pretty=format 常用的选项 列出了 format 接受的常用格式占位符的写法及其代表的意义。

    git log --pretty=format 常用的选项

    选项说明
    %H提交的完整哈希值
    %h提交的简写哈希值
    %T树的完整哈希值
    %t树的简写哈希值
    %P父提交的完整哈希值
    %p父提交的简写哈希值
    %an作者名字
    %ae作者的电子邮件地址
    %ad作者修订日期(可以用 --date=选项 来定制格式)
    %ar作者修订日期,按多久以前的方式显示
    %cn提交者的名字
    %ce提交者的电子邮件地址
    %cd提交日期
    %cr提交日期(距今多长时间)
    %s提交说明

    作者指的是实际作出修改的人,提交者指的是最后将此工作成果提交到仓库的人。 所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时,你就是作者,而那个核心成员就是提交者。

    onelineformat 与另一个 log 选项 --graph 结合使用时尤其有用。 这个选项添加了一些 ASCII 字符串来形象地展示你的分支、合并历史:

    在这里插入图片描述

    在git源码库中使用此命令,项目太多了,截图两张了解下:
    首页:
    在这里插入图片描述
    某一页:
    在这里插入图片描述
    以上只是简单介绍了一些 git log 命令支持的选项。 git log 的常用选项 列出了我们目前涉及到的和没涉及到的选项,以及它们是如何影响 log 命令的输出的。

    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(用来定义自己的格式)。
    –oneline–pretty=oneline --abbrev-commit 合用的简写。

    10、git log --oneline

    在这里插入图片描述
    在这里插入图片描述

    11、限制输出长度

    除了定制输出格式的选项之外,git log 还有许多非常实用的限制输出长度的选项,也就是只输出一部分的提交。 之前你已经看到过 -2 选项了,它只会显示最近的两条提交, 实际上,你可以使用类似 -<n> 的选项,其中的 n 可以是任何整数,表示仅显示最近的 n 条提交。 不过实践中这个选项不是很常用,因为 Git 默认会将所有的输出传送到分页程序中,所以你一次只会看到一页的内容。

    但是,类似 --since--until 这种按照时间作限制的选项很有用。 例如,下面的命令会列出最近两周的所有提交:git log --since=2.weeks

    最近14年的所有提交:

    git log --since=14.years

    在这里插入图片描述
    该命令可用的格式十分丰富——可以是类似 “2008-01-15” 的具体的某一天,也可以是类似 “14 years 1 day 3 minutes ago” 的相对日期。

    git log --since=14 years 1 day 3 minutes ago

    在这里插入图片描述

    git log --since="2008-01-15"

    在这里插入图片描述
    还可以过滤出匹配指定条件的提交。 用 --author 选项显示指定作者的提交,用 --grep 选项搜索提交说明中的关键字。

    你可以指定多个 --author 和 --grep 搜索条件,这样会只输出 任意 匹配 --author 模式和 --grep 模式的提交。然而,如果你添加了 --all-match 选项, 则只会输出 所有 匹配 --grep 模式的提交。

    另一个非常有用的过滤器是 -S, 它接受一个字符串参数,并且只会显示那些添加或删除了该字符串的提交。 假设你想找出添加或删除了对某一个特定函数的引用的提交,可以调用:

    git log -S function_name

    最后一个很实用的 git log 选项是路径(path), 如果只关心某些文件或者目录的历史提交,可以在 git log 选项的最后指定它们的路径。 因为是放在最后位置上的选项,所以用两个短划线(--)隔开之前的选项和后面限定的路径名。

    限制 git log 输出的选项 中列出了常用的选项。

    限制 git log 输出的选项

    选项说明
    -<n>仅显示最近的 n 条提交。
    –since, --after仅显示指定时间之后的提交。
    –until, --before仅显示指定时间之前的提交。
    –author仅显示作者匹配指定字符串的提交。
    –committer仅显示提交者匹配指定字符串的提交。
    –grep仅显示提交说明中包含指定字符串的提交。
    -S仅显示添加或删除内容匹配指定字符串的提交。

    12、实例:

    来看一个实际的例子,如果要在 Git 源码库中查看 Junio Hamano 在 2008 年 10 月其间, 除了合并提交之外的哪一个提交修改了测试文件,可以使用下面的命令:
    git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" --before="2008-11-01" --no-merges -- t/

    Git 源码库:https://github.com/git/git
    在这里插入图片描述

    clone: git clone https://github.com/git/git.git
    在这里插入图片描述
    命令:

    git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" --before="2008-11-01" --no-merges -- t/
    

    在这里插入图片描述
    在近 40000 条提交中,上面的输出仅列出了符合条件的 6 条记录。

    隐藏合并提交: 按照你代码仓库的工作流程,记录中可能有为数不少的合并提交,它们所包含的信息通常并不多。为了避免显示的合并提交弄乱历史记录,可以为 log 加上 --no-merges 选项。

    在这里插入图片描述

    展开全文
  • 前端开源库-gitlog

    2019-08-30 06:53:41
    前端开源库-gitlog用于node.js的Gitlog、Git日志分析器
  • 在平时的开发中,经常会遇到代码提交错了需要回滚到一个历史版本,或因为大意回滚错了代码又需要还原等问题,这种回滚和还原操作都离不开git操作命令历史记录的查询。哪git为什么能实现回滚和撤销操作呢?主要跟HEAD...
  • 如何退出git log状态

    千次阅读 2021-09-11 10:11:55
    git log:命令可以会按时间列出所有更新,会列出每个提交的SHA-1校验和,作者的名字和和电子邮件信息,提交时间和提交说明 用git log 按Ctrl+c无法退出 解决方法:英文状态下按q ,即可退出 git reset --hard ...
  • git log 日期格式

    2021-08-27 16:02:48
    默认的git log查看日志显示的格式如下: Date: Thu Aug 16 17:44:32 2018 +0800 可能不是很容易识别。git bash中使用命令设置即可: //修改当前仓库log date格式 git config log.date iso-strict-local //全局设置...
  • Git - Git Log 退出方法

    千次阅读 2020-06-29 10:33:31
    使用git log之后无法回到主页面,如下图所示,最后只能暴力关闭git bash。 解决方法其实很简单,输入字母Q即可退出!
  • git log 查看 提交历史

    2020-12-29 11:22:23
    在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 Git log 命令查看。接下来的例子会用我专门用于演示的 simplegit 项目,运行下面的命令获取该项目源代码:git clone git://github....
  • 开发中记得之前某个功能做过了,但是因为某些原因这个已经开发好了的功能屏蔽了,现在又要使用它,然而什么时候做的都忘记了,只记得做过这个功能,或者当时提交git log的关键字,那么就有了,这篇文章git log怎么...
  • 文章目录一分钟看懂IDEA中的GIT LOG视图引言:分支信息:提交历史:提交信息: 一分钟看懂IDEA中的GIT LOG视图 引言: ​ 在日常工作中,我们通常用IDEA作为开发工具进行编码,在其中众多的插件中,GIT可以说是经常...
  • git log详解

    2021-01-20 17:00:40
    –stat git log基础上输出增删改的统计数据 -p path之意,输出具体修改内容,diff的形式给出 git show 跟git log -p类似。 git shortlog 输出汇总信息,以作者分类 –pretty 自定义输出信息 –author ="xxxx"过滤...
  • idea git log 面板

    千次阅读 2022-01-18 11:51:14
    git log 面板 解释 cherry pick 参考这里 reset current branch to here 情形1:提交了多次错误的提交,想回滚到之前的某次提交。 情形2:合并了错误的分支,想回滚到合并之前。 状态: 修改前,修改后 add 前...
  • 于是查了下,发现git blame命令和git log命令. 需要注意的是 git log统计有可能由误差(比如空行,或者其他非代码文件也会当作统计) 代码量和个人的贡献不成正比, 正比如代码提交次数不能直接反应一个人的编写代码的...
  • git log 详解

    万次阅读 多人点赞 2019-01-14 14:29:28
    git log 可以让我们查看提交commit history,接下来我们来一起探索git log提供的参数。 $ git log commit 0005d1e3f54b79fe4707fbccc44b89e0fb4ce565 (HEAD -&gt; master, origin/master, origin/HEAD) Author: ...
  • git log命令全解析

    千次阅读 2018-08-14 20:32:11
    git log命令非常强大而好用,在复杂系统的版本管理中扮演着重要的角色,但默认的git log命令显示出的东西实在太丑,不好好打扮一下根本没法见人,打扮好了用alias命令拍个照片,就正式出道了! 下面先详细而系统地...
  • git log 常用命令以及解析

    千次阅读 2020-09-05 09:05:07
    阅读目录1.git log2.git log -n3.git log --stat -n4. 指定日期、关键字、作者5. 查看某次commit做了哪些修改 1.git log 如果不带任何参数,它会列出所有历史记录,最近的排在最上方,显示提交对象的哈希值,作者...
  • Git(4)-- 如何退出 git loggit commit 状态

    千次阅读 多人点赞 2021-08-12 06:46:25
    文章目录一、`git log` 的退出二、`git commit` 的退出1 、保存并退出:2 、不保存退出: 一、git log 的退出 当commit(提交)比较多,git log 的内容在一页显示不完整,满屏放不下的时候,就会显示冒号。 回车...
  • 1.通过关键字查找一些提交(这个关键字要是comit信息里面的) git log --grep==xxx(你想查找的关键字) 2.查找对应人的提交 git log--author=xxxx(你想找的人名字)
  • git log中文乱码解决

    千次阅读 2021-08-25 15:37:32
    之前代码提交后,有中文备注,但是在使用git log查看代码历史记录的时候发现显示乱码,如下: 后查询相关资料,现将解决办法总结如下: 1、运行Git Bash窗口,在该窗口导航条(即最上面)右键,选择Options−>...
  • git loggit reflog

    千次阅读 2019-01-27 17:40:28
    git loggit reflog 都可以查看历史版本commit及其对应的版本号  git log 在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 235,503
精华内容 94,201
关键字:

git log

友情链接: 除表单代码.rar