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

相关文章

Kubernetes常用命令大全近期总结

《Kubernetes常用命令大全近期总结》Kubernetes是用于大规模部署和管理这些容器的开源软件-在希腊语中,这个词还有“舵手”或“飞行员”的意思,使用Kubernetes(有时被称为“... 目录前言Kubernetes 的工作原理为什么要使用 Kubernetes?Kubernetes常用命令总

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

高效管理你的Linux系统: Debian操作系统常用命令指南

《高效管理你的Linux系统:Debian操作系统常用命令指南》在Debian操作系统中,了解和掌握常用命令对于提高工作效率和系统管理至关重要,本文将详细介绍Debian的常用命令,帮助读者更好地使... Debian是一个流行的linux发行版,它以其稳定性、强大的软件包管理和丰富的社区资源而闻名。在使用

Mybatis提示Tag name expected的问题及解决

《Mybatis提示Tagnameexpected的问题及解决》MyBatis是一个开源的Java持久层框架,用于将Java对象与数据库表进行映射,它提供了一种简单、灵活的方式来访问数据库,同时也... 目录概念说明MyBATis特点发现问题解决问题第一种方式第二种方式问题总结概念说明MyBatis(原名

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

使用@Slf4j注解,log.info()无法使用问题

《使用@Slf4j注解,log.info()无法使用问题》在使用Lombok的@Slf4j注解打印日志时遇到问题,通过降低Lombok版本(从1.18.x降至1.16.10)解决了问题... 目录@Slf4androidj注解,log.info()无法使用问题最后解决总结@Slf4j注解,log.info(

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit