Git常用命令tag和log和blame

2023-11-21 07:30
文章标签 常用命令 git log tag blame

本文主要是介绍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 +0800add c.txtcommit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800add b.txtcommit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800add 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 +0800add 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 85024a7247d95f554285ab1823c22faaed593d9bAuthor: zsx242030 <2420309401@qq.com>Date:   Mon Mar 13 15:38:29 2023 +0800add 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 +0800add c.txtc.txt | 1 +1 file changed, 1 insertion(+)commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800add b.txtb.txt | 1 +1 file changed, 1 insertion(+)commit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800add a.txta.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 +0800add 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 +0800add c.txtcommit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800add b.txtcommit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800add 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 +0800add 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 +0800add b.txt$ git whatchanged b.txt
commit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800add 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 +0800add b.txtdiff --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 +0800add c.txtdiff --git a/c.txt b/c.txt
new file mode 100644
index 0000000..f2ad6c7
--- /dev/null
+++ b/c.txt
@@ -0,0 +1 @@
+ccommit 79b58ae981f070c3bf59fafa654984262fe4a78a
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:44 2023 +0800add b.txtdiff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/b.txt
@@ -0,0 +1 @@
+bcommit 85024a7247d95f554285ab1823c22faaed593d9b
Author: zsx242030 <2420309401@qq.com>
Date:   Mon Mar 13 15:38:29 2023 +0800add 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

2.18 格式化输出

$ git log --format="xxx"
$ git log --pretty=format:"xxx"

在这里插入图片描述

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

这篇关于Git常用命令tag和log和blame的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/400784

相关文章

IDEA中新建/切换Git分支的实现步骤

《IDEA中新建/切换Git分支的实现步骤》本文主要介绍了IDEA中新建/切换Git分支的实现步骤,通过菜单创建新分支并选择是否切换,创建后在Git详情或右键Checkout中切换分支,感兴趣的可以了... 前提:项目已被Git托管1、点击上方栏Git->NewBrancjsh...2、输入新的分支的

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

SQL中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提