zoukankan      html  css  js  c++  java
  • 4. Git 日志命令

    前言

    该文章只是记录了一些自己的见解,可能并不准确,只是为了学习时的一些记录,不喜勿喷,谢谢

    这里参考了博客:https://www.cnblogs.com/qiqi715/p/9393252.html,谢谢

    日志命令,其实正确的来说,不能完成的说是日志的记录,不同命令效果不一样,下面来看看

    1. git log

    记录版本提交记录节点信息

    该命令是用来记录 我们 每次 git commit 后的每一个版本记录日志,主要内容大致如下:

    1. 提交者 名称和邮箱
    2. 提交日期
    3. 提交备注
    4. 提交时根据内容生成的 sha-1 加密的id
    5. 根据提交顺序倒序展示
    6. 还可以通过命令展示其分支合并情况等

    下面我们来模拟一下, 如下图:

    [root@huangzb mygit]# ll
    total 0
    [root@huangzb mygit]# echo 'hello world' > a.txt
    [root@huangzb mygit]# git add .
    [root@huangzb mygit]# git commit -m 'init'
    [master (root-commit) 0753c5d] init
    1 file changed, 1 insertion(+)
    create mode 100644 a.txt
    [root@huangzb mygit]#
    [root@huangzb mygit]#
    [root@huangzb mygit]# echo 'hello 1' >> a.txt
    [root@huangzb mygit]# cat a.txt
    hello world
    hello 1
    [root@huangzb mygit]# git commit -am 'hello 1 commit'
    [master 83fc6f0] hello 1 commit
    1 file changed, 1 insertion(+)
    [root@huangzb mygit]#
    [root@huangzb mygit]# echo 'hello 2' >> a.txt
    [root@huangzb mygit]# git commit -am 'hello 2 commit'
    [master 7f75b03] hello 2 commit
    1 file changed, 1 insertion(+)
    [root@huangzb mygit]#
    [root@huangzb mygit]# git log
    commit 7f75b035874561f78e0765c32fb51a32bca26d92
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:38:07 2020 +0800
     
        hello 2 commit
     
    commit 83fc6f0404325868b29085f626bbb93df415f751
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:37:20 2020 +0800
     
        hello 1 commit
     
    commit 0753c5d9da2998f49970789cabc07b792839dc0e
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:36:18 2020 +0800
     
        init
    [root@huangzb mygit]#
     
    

    从上图可以看出,使用 git log 命令,可以看出我们提交的记录。

    2. git log --graph

    以图形化的方式,记录了不同分支版本的合并情况

    我们先来看看没有添加分支前的样子

    [root@huangzb mygit]# git log --graph
    * commit 7f75b035874561f78e0765c32fb51a32bca26d92
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:38:07 2020 +0800
    |
    |     hello 2 commit
    |
    * commit 83fc6f0404325868b29085f626bbb93df415f751
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:37:20 2020 +0800
    |
    |     hello 1 commit
    |
    * commit 0753c5d9da2998f49970789cabc07b792839dc0e
      Author: huangzb <huangzb@huangzb.com>
      Date:   Sat Mar 21 20:36:18 2020 +0800
     
          init
    [root@huangzb mygit]#
     
    

    可以看到有了 --graph 参数后,在提交记录最左边有一条连线,标识着提交的分支情况,因为当前只有一个分支,且都是在 master上提交,因此呈现出一条直线,下面我们添加一个分支,且做变化后,再合并,看看效果,如下图:

    [root@huangzb mygit]#
    [root@huangzb mygit]# echo 'hello master' > b.txt
    [root@huangzb mygit]# cat b.txt
    hello master
    [root@huangzb mygit]# git checkout -b dev
    M       a.txt
    Switched to a new branch 'dev'
    [root@huangzb mygit]# echo 'hello dev' > b.txt
    [root@huangzb mygit]# git commit -am 'dev commit'
    [dev 32c8d01] dev commit
    1 file changed, 1 insertion(+), 1 deletion(-)
    [root@huangzb mygit]#
    [root@huangzb mygit]# git checkout master
    Switched to branch 'master'
    [root@huangzb mygit]#
    [root@huangzb mygit]# git merge dev --no-ff
    Press ENTER or type command to continue
    Merge made by the 'recursive' strategy.
    a.txt | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)
    [root@huangzb mygit]#
    [root@huangzb mygit]# git log --graph
    *   commit f51ca704537257103f92be3e6190d43f241ff9ef
    |  Merge: c9d53ef 32c8d01
    | | Author: huangzb <huangzb@huangzb.com>
    | | Date:   Sat Mar 21 20:48:33 2020 +0800
    | |
    | |     Merge branch 'dev'
    | |
    | * commit 32c8d019b95dab5ae484b258722133384de887a6
    |/  Author: huangzb <huangzb@huangzb.com>
    |   Date:   Sat Mar 21 20:48:15 2020 +0800
    |
    |       dev commit
    |
    * commit c9d53ef6399edaa06727a1b67e1a7f09edf85732
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:44:49 2020 +0800
    |
    |     dev commit
    |
    * commit 7f75b035874561f78e0765c32fb51a32bca26d92
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:38:07 2020 +0800
    |
    |     hello 2 commit
    |
    * commit 83fc6f0404325868b29085f626bbb93df415f751
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:37:20 2020 +0800
    |
    |     hello 1 commit
    |
    * commit 0753c5d9da2998f49970789cabc07b792839dc0e
      Author: huangzb <huangzb@huangzb.com>
      Date:   Sat Mar 21 20:36:18 2020 +0800
     
          init
    [root@huangzb mygit]#
     
    

    由上图可以看到,在多分支的情况下,进行了分支的合并后,可以看到使用 --graph 参数后的效果,展示了其分支在哪个节点开始进行了分支的合并。

    3. git log -n

    使用 -n 参数,可以查看最近的指定 n 条提交记录

    有时候,在一个项目用得久了,可能提交记录太多了,而我们一般只看最近的提交记录,可以使用 -n 参数来查看指定 n 条最近的提交记录,如下图:

    [root@huangzb mygit]# git log -3 --graph
    *   commit f51ca704537257103f92be3e6190d43f241ff9ef
    |  Merge: c9d53ef 32c8d01
    | | Author: huangzb <huangzb@huangzb.com>
    | | Date:   Sat Mar 21 20:48:33 2020 +0800
    | |
    | |     Merge branch 'dev'
    | |
    | * commit 32c8d019b95dab5ae484b258722133384de887a6
    |/  Author: huangzb <huangzb@huangzb.com>
    |   Date:   Sat Mar 21 20:48:15 2020 +0800
    |
    |       dev commit
    |
    * commit c9d53ef6399edaa06727a1b67e1a7f09edf85732
    | Author: huangzb <huangzb@huangzb.com>
    | Date:   Sat Mar 21 20:44:49 2020 +0800
    |
    |     dev commit
    [root@huangzb mygit]#
     
    

    由上图可以看到,我们使用 -n 参数,只展示了最近的 3条提交记录

    4. git log [fileName]

    如果想要查看指定文件的提交记录,可以使用该命令

    操作如下图:

    [root@huangzb mygit]# echo 'hello master ' >> b.txt
    [root@huangzb mygit]#
    [root@huangzb mygit]# git add .
    [root@huangzb mygit]# git commit -m 'add hello master a line in b.txt'
    [master ecf76db] add hello master a line in b.txt
    1 file changed, 2 insertions(+)
    create mode 100644 b.txt
    [root@huangzb mygit]# git log b.txt
    commit ecf76db79e0ccd5ab3532c63b4829de349ab133b
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:01 2020 +0800
     
        add hello master a line in b.txt
    [root@huangzb mygit]# echo 'hello world ' >> b.txt
    [root@huangzb mygit]# git commit -am 'update b.txt commit'
    [master 0830a0d] update b.txt commit
    1 file changed, 1 insertion(+)
    [root@huangzb mygit]# git log b.txt
    commit 0830a0dd5b664adadc28f589d6f70c1b103bf5c4
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:54 2020 +0800
     
        update b.txt commit
     
    commit ecf76db79e0ccd5ab3532c63b4829de349ab133b
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:01 2020 +0800
     
        add hello master a line in b.txt
    [root@huangzb mygit]#
     
    

    由上图可以看出,当我们修改了 b.txt 文件,且提交了两次后,使用 git log b.txt 命令后可以看到只有两条记录是关于 该文件的提交

    5. git log -p [可选文件名]

    添加 -p 参数,可以看到版本的所有提交的文件修改信息,也可以指定查看某个文件的所有提交记录的文件差异查看

    下面,我们来使用该命令看看 b.txt 文件的差异

    [root@huangzb mygit]# git log -p b.txt
    commit 0830a0dd5b664adadc28f589d6f70c1b103bf5c4
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:54 2020 +0800
     
        update b.txt commit
     
    diff --git a/b.txt b/b.txt
    index 9f8f74d..9248ec7 100644
    --- a/b.txt
    +++ b/b.txt
    @@ -1,2 +1,3 @@
    hello dev
    hello master
    +hello world
     
    commit ecf76db79e0ccd5ab3532c63b4829de349ab133b
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:01 2020 +0800
     
        add hello master a line in b.txt
     
    diff --git a/b.txt b/b.txt
    new file mode 100644
    index 0000000..9f8f74d
    --- /dev/null
    +++ b/b.txt
    @@ -0,0 +1,2 @@
    +hello dev
    +hello master
    [root@huangzb mygit]#
     
    

    6. git show commit_id [可选文件名]

    通过 git log -p 命令可以看到指定文件的所有修改记录,如果我们只想要看某一个提交记录中的某个文件的差异的话,就可以使用该命令 git show 提交id 查看文件名 来看看

    我们来看看效果,如下:

    [root@huangzb mygit]# git show 0830a0 b.txt
    commit 0830a0dd5b664adadc28f589d6f70c1b103bf5c4
    Author: huangzb <huangzb@huangzb.com>
    Date:   Sat Mar 21 20:57:54 2020 +0800
     
        update b.txt commit
     
    diff --git a/b.txt b/b.txt
    index 9f8f74d..9248ec7 100644
    --- a/b.txt
    +++ b/b.txt
    @@ -1,2 +1,3 @@
    hello dev
    hello master
    +hello world
    [root@huangzb mygit]#
     
    

    7. 其余属性配置

    选项 说明
    -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(后跟指定格式)。
    选项 说明
    -(n) 仅显示最近的 n 条提交
    --since, --after 仅显示指定时间之后的提交。
    --until, --before 仅显示指定时间之前的提交。
    --author 仅显示指定作者相关的提交。
    --committer 仅显示指定提交者相关的提交。
    --grep 仅显示含指定关键字的提交
    -S 仅显示添加或移除了某个关键字的提交
  • 相关阅读:
    weblogic中server的启动
    oracle connect by
    DBA常用的一些视图和sql
    查询分类并实现分类统计SQL存储过程
    从一组数据中寻找第K大的数
    一个关于StringBuilder延伸类
    总结.net的技术特性
    C#Reflection学习记录
    Asp.net 安全补丁发布
    比较无聊的while与for的较量。
  • 原文地址:https://www.cnblogs.com/duguxiaobiao/p/12598618.html
Copyright © 2011-2022 走看看