标签操作,常用于发布版本。
# 新建一个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 "打版"
# 查看单个标签具体信息
$ git show tag_name
# 例如
$ git show v0.1
# 查看所有tag
# 注意:tag不是按时间顺序列出,而是按字母排序的
$ git tag
# 删除本地tag
# 因为创建的标签都只存储在本地,不会自动推送到远程,所以打错的标签可以在本地安全删除
$ git tag -d tag_name
$ git tag -d v0.1
# 推送一个本地标签
$ git push origin tag_name
# 推送全部未推送过的本地标签
$ git push origin --tags
# 若是标签已经推向远程仓库,先删除本地,再删除远程仓库的标签
$ git push origin :refs/tags/tagname
查看历史提交记录。
# 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" -> 可以定制要显示的记录格式
# 该命令可用于显示当前分支的版本历史记录
$ 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
$ 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
$ 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
$ 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(+)
# 仅显示添加或删除内容匹配指定字符串的提交
$ 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
$ 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
$ 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
$ 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
# 该命令可用于显示某个文件的版本历史记录,包括文件的重命名
$ 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
$ 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
$ git log -5 --pretty --oneline
74e53a8 (HEAD -> master, tag: v1.0) add c.txt
79b58ae add b.txt
85024a7 add a.txt
$ git log --pretty=oneline
74e53a894c0f86e74b8fe413776638b6ec7ec07a (HEAD -> master, tag: v1.0) add c.txt
79b58ae981f070c3bf59fafa654984262fe4a78a add b.txt
85024a7247d95f554285ab1823c22faaed593d9b add a.txt
$ git log --graph --pretty=oneline --abbrev-commit
* 74e53a8 (HEAD -> master, tag: v1.0) add c.txt
* 79b58ae add b.txt
* 85024a7 add a.txt
$ 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
$ 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
| 表示分支前进
/ 表示分叉
\ 表示合入
|/ 表示新分支
$ 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
$ 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
如果你要指定日期,可以执行几个选项:--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
$ git log --format="xxx"
$ git log --pretty=format:"xxx"
# 以列表形式查看指定文件的历史修改记录
$ 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