您现在的位置是:首页 >技术交流 >Git常用命令tag和log和blame网站首页技术交流

Git常用命令tag和log和blame

zsx_yiyiyi 2024-07-03 12:01:03
简介Git常用命令tag和log和blame

Git常用命令tag和log和blame

1、tag

标签操作,常用于发布版本。

1.1 新建tag

# 新建一个tag在当前commit
$ git tag tag_name
$ git tag v1.0
# 新建一个tag在指定commit
$ git tag tag_name commit
$ git tag v0.9 f52c633
# -a选项意为创建一个带注解的标签,不用-a选项也可以执行的,但它不会记录这标签是啥时候打的
# 谁打的,也不会让你添加个标签的注解
$ git tag -a tag_name
$ git tag -a v1.0

# 执行下面可以看到我们的标签
$ git log --decorate
# 创建带有说明的标签,用-a指定tag名,-m指定说明文字
# 如果不指定commit则为当前commit
$ git tag -a tag_name -m "描述信息" commit
$ git tag -a v0.1 -m "version 0.1 released"
# PGP签名标签命令
$ git tag -s tag_name -m "message"

# 具体步骤
# 1
# 会输入一个密码:zsx242030
$ gpg --gen-key

# 2
# 验证一下是否生成成功
$ gpg --list-keys

# 3
# 看一下与之匹配的私钥
$ gpg --list-secret-keys

# 4
# 打tag
$ git tag -s v3.0 -m "打版"

1.2 查看某个tag

# 查看单个标签具体信息
$ git show tag_name
# 例如
$ git show v0.1

1.3 查看所有tag

# 查看所有tag
# 注意:tag不是按时间顺序列出,而是按字母排序的
$ git tag

1.4 删除tag

# 删除本地tag
# 因为创建的标签都只存储在本地,不会自动推送到远程,所以打错的标签可以在本地安全删除
$ git tag -d tag_name
$ git tag -d v0.1

1.5 推送tag

# 推送一个本地标签
$ git push origin tag_name
# 推送全部未推送过的本地标签
$ git push origin --tags

1.6 删除远程tag

# 若是标签已经推向远程仓库,先删除本地,再删除远程仓库的标签
$ git push origin :refs/tags/tagname

2、log

查看历史提交记录。

# git中D向下翻一行,F向下翻页,B向上翻页,Q退出
# 查看提交历史
$ git log --oneline
          --grep="关键字"
          --graph
          --all
          --author "username"
          --reverse
          -num
          -p
          --before=  1  day/1  week/1 "2019-06-06"
          --after= "2019-06-06"
          --stat
          --abbrev-commit
          --pretty=format:"xxx"
# oneline -> 将日志记录一行一行的显示
# grep="关键字" -> 查找日志记录中(commit提交时的注释)与关键字有关的记录
# graph -> 记录图形化显示
# all -> 将所有记录都详细的显示出来
# author "username" -> 查找这个作者提交的记录
# reverse -> commit提交记录顺序翻转
# num -> git log -10 显示最近10次提交
# p -> 显示每次提交所引入的差异(按补丁的格式输出)
# before -> 查找规定的时间(如:1天/1周)之前的记录
# stat -> 显示每次更新的文件修改统计信息,会列出具体文件列表
# abbrev-commit -> 仅显示SHA-1的前几个字符,而非所有的 40 个字符
# pretty=format:"xxx" ->  可以定制要显示的记录格式

2.1 显示当前分支的版本历史

# 该命令可用于显示当前分支的版本历史记录
$ git log
commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master)
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:39:01 2023 +0800

    add c.txt

commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

2.2 -n的形式制定查询几条记录

$ git log -n   
# 例子
$ git log -1
commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master)
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:39:01 2023 +0800

    add c.txt

2.3 --graph以图形化的形式展示历史记录

$ git log --graph
* commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master)
| Author: zsx242030 <2420309401@qq.com>
| Date:   Mon Mar 13 15:39:01 2023 +0800
|
|     add c.txt
|
* commit 79b58ae981f070c3bf59fafa654984262fe4a78a
| Author: zsx242030 <2420309401@qq.com>
| Date:   Mon Mar 13 15:38:44 2023 +0800
|
|     add b.txt
|
* commit 85024a7247d95f554285ab1823c22faaed593d9b
  Author: zsx242030 <2420309401@qq.com>
  Date:   Mon Mar 13 15:38:29 2023 +0800

      add a.txt

2.4 显示commit历史,以及每次commit发生变更的文件

$ git log --stat
commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master)
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:39:01 2023 +0800

    add c.txt

 c.txt | 1 +
 1 file changed, 1 insertion(+)

commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

 b.txt | 1 +
 1 file changed, 1 insertion(+)

commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

 a.txt | 1 +
 1 file changed, 1 insertion(+)

2.5 搜索提交历史,根据关键词

# 仅显示添加或删除内容匹配指定字符串的提交
$ git log -S [keyword]
$ git log -S a
commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

2.6 显示tag的日志

$ git log [tag-name]
$ git tag -a v1.0 -m "v1.0"
$ git log v1.0
commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master, tag: v1.0)
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:39:01 2023 +0800

    add c.txt

commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

2.7 显示某个commit之后的所有变动,每个commit占据一行

$ git log [tag] HEAD --pretty=format:%s
$ git log v1.0 HEAD --pretty=format:%s
add c.txt
add b.txt
add a.txt
$ git log HEAD --pretty=format:%s
add c.txt
add b.txt
add a.txt

2.8 显示某个commit之后的所有变动,其"提交说明"必须符合搜索条件

$ git log [tag] HEAD --grep feature
$ git log HEAD --grep "add a.txt"
commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

2.8 显示某个文件的版本历史,包括文件改名

# 该命令可用于显示某个文件的版本历史记录,包括文件的重命名
$ git log --follow [file]
$ git whatchanged [file]
$ git log --follow b.txt
commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

$ git whatchanged b.txt
commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

:000000 100644 0000000... 6178079... A  b.txt

2.9 显示指定文件相关的每一次diff

$ git log -p [file]
$ git log -p b.txt
commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+b

2.10 显示过去5次提交

$ git log -5 --pretty --oneline
74e53a8 (HEAD -> master, tag: v1.0) add c.txt
79b58ae add b.txt
85024a7 add a.txt

2.11 查看日志,以单行显示

$ git log --pretty=oneline
74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master, tag: v1.0) add c.txt
79b58ae981f070c3bf59fafa654984262fe4a78a add b.txt
85024a7247d95f554285ab1823c22faaed593d9b add a.txt

2.12 查看分支合并情况

$ git log --graph --pretty=oneline --abbrev-commit
* 74e53a8 (HEAD -> master, tag: v1.0) add c.txt
* 79b58ae add b.txt
* 85024a7 add a.txt

2.13 显示提交日志及相关变动文件

$ git log --stat                                            
$ git log -p -m
commit 74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master, tag: v1.0)
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:39:01 2023 +0800

    add c.txt

diff --git a/c.txt b/c.txt
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/c.txt
@@ -0,0 +1 @@
+c

commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800

    add b.txt

diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+b

commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800

    add a.txt

2.14 图示提交日志

$ git log --pretty=format:'%h %s' --graph
* 74e53a8 add c.txt
* 79b58ae add b.txt
* 85024a7 add a.txt

git log 点线图:

git 中一条分支就是一个指针,新建一条分支就是基于当前指针新建一个指针。

切换至某个分支 ,就是将 HEAD 指向某条分支(指针)。

切换至某个 commit ,就是将 HEAD 指向某个 commit。

符号解释:

*	表示一个 commit
|	表示分支前进
/	表示分叉
	表示合入
|/	表示新分支

2.15 逆向显示所有日志

$ git log --reverse --oneline
8e58180 add a.txt
8c4a625 add b.txt
9c173bb add c.txt
c0547da add d.txt
47e8b59 add e.txt
87d5c63 add f.txt
ddbfc0b (origin/branch_a) branch_a | update a.txt | add new.txt
5b05cb6 (origin/branch_b) branch_b | update a.txt | add new.txt
8cb57f6 (origin/branch_c) branch_c | update a.txt | delete e.txt
d735ee3 (HEAD -> master, origin/master, origin/branch_d, origin/HEAD) branch_d | update a.txt | update b.txt | update e.txt

2.16 查找指定用户的提交日志

$ git log --author=zsx242030 --oneline -5
d735ee3 (HEAD -> master, origin/master, origin/branch_d, origin/HEAD) branch_d | update a.txt | update b.txt | update e.txt
8cb57f6 (origin/branch_c) branch_c | update a.txt | delete e.txt
5b05cb6 (origin/branch_b) branch_b | update a.txt | add new.txt
ddbfc0b (origin/branch_a) branch_a | update a.txt | add new.txt
87d5c63 add f.txt

2.17 查询指定日期

如果你要指定日期,可以执行几个选项:--since--before,但是你也可以用 --until--after

–no-merges 选项可以隐藏合并提交。

$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
$ git log --oneline --before={1.hour.ago} --after={2023-03-11} --no-merges
$ git log --oneline --before={0.hour.ago} --after={2023-03-11} --no-merges

3、blame

# 以列表形式查看指定文件的历史修改记录
$ git blame <file>
$ git blame a.txt
ddbfc0b8 (zsx242030 2023-05-27 09:53:59 +0800 1) branch_a
8cb57f66 (zsx242030 2023-05-27 13:31:13 +0800 2) branch_b
d735ee3c (zsx242030 2023-05-27 17:04:00 +0800 3) branch_c
d735ee3c (zsx242030 2023-05-27 17:04:00 +0800 4) branch_d
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。