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 仅显示添加或移除了某个关键字的提交
posted @ 2020-03-30 14:53  风中追风_lonely  阅读(295)  评论(0编辑  收藏  举报