标签与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 a2b.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 Javagit 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跟原来一样的注释