标签与diff
Git标签
- 新建标签,标签有两种:轻量级标签(lightweight)与带有附注标签(annotated)
创建一个轻量级标签
git tag v1.0.0
创建一个带有附注的标签
git tag -a v1.0.1 -m 'release version'
删除标签
git tag -d tag_name
我们先创建一个轻量级标签:
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git tag v1.0.0
查看下git reflog
:
a7ce3cd (HEAD -> test, tag: v1.0.0) HEAD@{0}: commit: finish the file
a5300dd HEAD@{1}: commit: apply stash
3573a23 HEAD@{2}: reset: moving to HEAD
3573a23 HEAD@{3}: reset: moving to HEAD
3573a23 HEAD@{4}: reset: moving to HEAD
发现没有任何多余的操作,只是增加了个指针,没有任何文件的移动
我们再试试带注释的:
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git tag -a v2.0.0 -m '2.0.0 released'
如果想查看你有哪些标签,则直接使用命令:git tag
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git tag
v1.0.0
v2.0.0
如果想在很多标签中查找某个标签,则可以加上这个标签的关键字并且在前面跟上-l
参数,也可以跟上--list
参数:
$ git tag -l "v2.0.0"
v2.0.0
$ git tag --list "v2.0.0"
v2.0.0
删除标签:增加-d
参数
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git tag -d v1.0.0
Deleted tag 'v1.0.0' (was a7ce3cd)
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git tag
v2.0.0
然后我们切换到master
,再次查看git tag
:
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (test)
$ git checkout master
Switched to branch 'master'
A@DESKTOP-6DP8MG1 MINGW64 /e/Gitfile (master)
$ git tag
v2.0.0
可以发现在master
中也能看到这个标签,可以说明标签不会随分支的改变而改变
git blame
这个命令在我们实际操作过程中,会经常用到,我们查看下它的文档:
git blame --help
git-blame - Show what revision and author last modified each line of a file
可以查看一个文件最近的修改是哪个人所做的,例:
$ git blame test1.txt
^61adf63 (YQHP-YuKi 2020-11-22 15:53:29 +0800 1) hello
9ed5c239 (YQHP-YuKi 2020-11-22 15:57:34 +0800 2) world
b38e36d4 (YQHP-YuKi 2020-11-22 15:58:38 +0800 3) hello world
3573a232 (YQHP-YuKi 2020-11-22 16:02:40 +0800 4) hello hello hello
69d720db (YQHP-YuKi 2020-12-01 19:17:47 +0800 5) stash in master
可以显示一个文件哪一行以及提交ID是由那一个人所做的
diff
git diff
这个命令是我们在项目开发时候会经常使用到的命令,主要是对比两个文件的差异性,在了解git diff
之前,我们先了解一下普通的diff
我们可以先查看一下自带的diff
命令:
$ which diff
/usr/bin/diff
然后创建两个txt文件,分别是a.txt
与b.txt
:
a.txt
:
$ cat a.txt
hello git
hello a1
hello a2
b.txt
:
$ cat b.txt
hello git
hello b1
hello b2
我们使用diff
查看一下:
$ diff a.txt b.txt
2,3c2,3
< hello a1
< hello a2
---
> hello b1
> hello b2
显示出这种,表示a.txt
与b.txt
的第二行与第三行不一样,a.txt
的第二行与第三行是hello a1 hello a2
,而b.txt
的第二行与第三行是hello b1 hello b2
,我们还可以在后面跟上参数-u
:
$ diff -u a.txt b.txt
--- a.txt 2020-12-04 11:00:12.492672500 +0800
+++ b.txt 2020-12-04 11:00:36.444675600 +0800
@@ -1,3 +1,3 @@
hello git
-hello a1
-hello a2
+hello b1
+hello b2
注:
- 以
a.txt
文件对比b.txt
文件,两个文件的创建时间 -1,-3
第一个文件从第一行开始有3
行+1,-3
第二个文件从第一行开始有3
行hello git
这一行两个文件都是一样的,第一个文件删去-hello a1 -hello a2
,加上+hello b1+ hello b2
就成了第二个文件
git diff
git diff
对比的是你分支中工作区文件与暂存区文件的区别,例:
我们先创建一个test.txt
,在此之前记得git status
查看状态,确保正常:
$ cat test.txt
hello world
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
这时候我们先执行git diff
试试:
Administrator@bigdata037 MINGW64 /c/Gitfile (master)
$ git diff
因为我们此时的工作区与缓存区是没有任何差别的,所以diff
检出不出任何差别,我们这时候再修改一下工作区的test.txt
试试:
$ cat test.txt
hello BMC
我们再执行git diff
试试:
Administrator@bigdata037 MINGW64 /c/Gitfile (master)
$ git diff
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory
diff --git a/test.txt b/test.txt
index 3b18e51..000048a 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1 @@
-hello world
+hello BMC
注:
- 因为两个文件都同名,所以
git
用了a/test.txt
与b/test.txt
做比较 - 其中以暂存区的
a/test.txt
作为源文件,工作区的b/test.txt
作为目标文件 - 暂存区删除
hello world
增加hello BMC
就成了工作区的test.txt
我们对test.txt
进行提交,查看一下状态:
$ git status
On branch master
nothing to commit, working tree clean
我们再修改test.txt
:
$ cat test.txt
hello world
hello Java
如果我们想对比工作区与版本库中的文件,可以使用git diff
,后面跟commit_id
,如果想对比当前最新的一次版本库文件,则可以直接在后面跟HEAD
例:
$ git diff HEAD
warning: LF will be replaced by CRLF in test.txt.
The file will have its original line endings in your working directory
diff --git a/test.txt b/test.txt
index 000048a..5c2892a 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
-hello BMC
+hello world
+hello Java
git diff --cached
比较的是版本库最新的提交与暂存区之间的差别
例:
最先的test1.txt
:
$ cat test1.txt
hello
world
hello world
hello hello hello
stash in master
现在修改的test1.txt
:
$ cat test1.txt
hello
world
hello world
对现在的test1.txt
进行git add
到缓存区:
$ git add test1.txt
执行git diff --cached
:
$ git diff --cached
diff --git a/test1.txt b/test1.txt
index 4783573..a08736b 100644
--- a/test1.txt
+++ b/test1.txt
@@ -1,5 +1,3 @@
hello
world
hello world
-hello hello hello
-stash in master
跟原来一样的注释