大家亦可打我的有道云笔记链接进行查看:有道云笔记
标签与diff
一、标签
01.课程引入
像其他版本控制系统(VCS)一样,Git 可以给仓库历史中的某一个提交打上标签,以示重要。 比较有代表性的是人们会使用这个功能来标记发布结点( v1.0、 v2.0 等等)。 在本节中,你将会学习如何列出已有的标签、如何创建和删除新的标签、以及不同类型的标签分别是什么。
02.标签简介
Git 支持两种标签:轻量标签(lightweight)与附注标签(annotated)。
轻量标签很像一个不会改变的分支——它只是某个特定提交的引用。而附注标签(即带有注释的标签)是存储在 Git 数据库中的一个完整对象, 它们是可以被校验的,其中包含打标签者的名字、电子邮件地址、日期时间, 此外还有一个标签信息,并且可以使用 GNU Privacy Guard (GPG)签名并验证。 通常会建议创建附注标签,这样你可以拥有以上所有信息。但是如果你只是想用一个临时的标签, 或者因为某些原因不想要保存这些信息,那么也可以用轻量标签。
03.轻量标签和附注标签
(1)轻量标签
创建轻量标签。
另一种给提交打标签的方式是使用轻量标签。 轻量标签本质上是将提交校验和存储到一个文件中——没有保存任何其他信息。 创建轻量标签,不需要使用 -a、-s 或 -m 选项,只需要提供标签名字:
$ git tag v11.0
(2)创建附注标签
创建附注标签通过命令git tag -a 版本信息 -m 标签信息 创建一个附注标签。
$ git tag -a v2.2 -m '这是一条附注标签'
(3)查看附注标签和轻量标签
这时,你可已通过命令git reflog或者git tag查看操作的命令,如果在标签上运行 git show,你不会看到额外的标签信息。 命令只会显示出提交信息:
通过git tag 命令
$ git tag
结果
v11.0
v2.0
v2.1
v2.2
通过
git reflog
结果228806e (HEAD -> demoo, tag: v2.2, tag: v2.1, tag: v2.0, tag: v11.0) HEAD@{0}: commit:
开始
通过git show
git show
结果
Author: qinlugang <qinlugang@ossxp.com> Date: Tue Dec 13 21:31:39 2022 +0800
开始
(4)查找标签版本
通过命令 git tag -l 要查找的版本号
例子一:
$ git tag -l 'v*'
v11.0
v2.0
v2.1
v2.2
例子二:
$ git tag -l 'v2.1'
v2.1
(5)删除指定标签
通过命令git tag -d 要删除的标签版本号
删除v2.0前
$ git tag
v11.0 v2.0 v2.1 v2.2
删除过后
$ git tag -d 'v2.0'
Deleted tag 'v2.0' (was 5ac2bec) QLG
$ git tag
v11.0
v2.1
v2.2
04、轻量标签与附注标签的相同点
-
- 两者打的标签的作用域是全局的,并非依赖于某一个分支。
- 两者只是在打标签的方式上有不一样,其他的标签的查找、删除和查看所有标签等方式的一样。
05、标签的应用场景
当你的项目发展到一定的阶段、里程碑和非常重要的时候就要打上一个标签。
二、diff命令
比较工作区和暂存区(staged,index)相同文件之间的差别
关键命令:git diff
-
- 两文件没有任何差别
- 创建一个hellodiff文件并写入“hello world”,并将hellodiff文件添加到暂存区中,查看工作空间,可以看到工作区是干净的
- 两文件没有任何差别
$ echo 'hello world'>hellodiff $ git add . warning: in the working copy of 'hellodiff', LF will be replaced by CRLF the next time Git touches it $ git status On branch demoo Untracked files: (use "git add <file>..." to include in what will be committed) hellodiff nothing added to commit but untracked files present (use "git add" to track)
-
-
- 使用命令git diff 查看工作区和暂存区相同文件的区别。此时没有任何结果,说明工作区的与暂存区的内容是一致的。
-
$ git diff
-
- 两文件存在差别
- 在上面的例子的基础上对hellodiff文件进行一定的修改,并通过git status命令查看工作区的状态,在通过git diff 查看作区和暂存区(staged,index)相同文件之间的差别此时的git diff命令显示的意义解释
- 两文件存在差别
#hellodiff没修改前
$ cat hellodiff
hello world
hello python
#通过vi/vim命令对hellodiff文件进行修改,将hello python修改成hello Javaweb
$ vi hellodiff
修改后:
$ cat hellodiff
hello world
hello Javaweb
通过git status命令看工作区暂存区状况。
$ git status
On branch demoo
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: hellodiff
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: hellodiff
通过git diff命令比较工作区和暂存区的状态
$ git diff
warning: in the working copy of 'hellodiff', LF will be replaced by CRLF the next time Git touches it
diff --git a/hellodiff b/hellodiff
index 883d68b..09e9ccf 100644
--- a/hellodiff
+++ b/hellodiff
@@ -1,2 +1,3 @@
hello world
-hello python
+hello Javaweb
+
通过命令git add .后被修改的hellodiff后查看hellodiff中的内容,可以看到hello python已经被hello Javaweb所替代了
$ cat hellodiff
hello world
hello Javaweb
比较工作区与版本库中的提交的差别
关键命令:git diff 提交链上某一个的id
工作区比较最新的一次提交中的文件的差别git diff HEAD
-
-
- 使用git diff HEAD命令
-
$ git diff HEAD
diff --git a/hellodiff b/hellodiff
index 2a65205..09e9ccf 100644
--- a/hellodiff
+++ b/hellodiff
@@ -1,2 +1,3 @@
hello world
-hello Java Web
+hello Javaweb +
比较暂存区和版本库中的差别
关键命令:git diff --cached
命令意义:比较最新的提交与暂存区的差别
使用命令git diff --cached
$ git diff --cached
diff --git a/hellodiff b/hellodiff
index 2a65205..09e9ccf 100644
--- a/hellodiff
+++ b/hellodiff
@@ -1,2 +1,3 @@
hello world
-hello Java Web
+hello Javaweb
+
三、知识拓展
命 令:git blame
命令选项:
:获取git blame 的基本用法。
文件名:获取该文件名的每一行代码是由那些人进行填写。
举例:
$ git blame test
228806eb (张三 2022-12-13 21:31:39 +0800 1) seg
0719a338 (张三 2022-12-14 12:24:42 +0800 2) 测试
0719a338 (张三 2022-12-14 12:24:42 +0800 3)saeg
0719a338 (张三 2022-12-14 12:24:42 +0800 4) sleg