git中的tag

git的tag是比較常用的一個特性,關於tag有人叫做標籤,有人叫做里程碑,無所謂了。

Git 支持兩種標籤:輕量標籤(lightweight)與附註標籤(annotated)。本篇重要討論如何使用輕量級標籤,關於附註標籤的使用,可以參考 這篇中文版的官方文檔

創建標籤

創建標籤的命令非常簡單

git tag <tag-name>

下面的例子在當前的提交下創建一個名叫v.10的標籤

git tag v1.0

檢查標籤

通過 git tag -l 列出本地所有的標籤

$ git tag -l
v0.1
v1.0

有了這個標籤列表,就可以看每個具體的標籤對應的提交信息了

通過 git show <tag-name>來檢查標籤

git show v1.0 
commit 0f7f90584bfa45f44547d623d48b9bfac21f1b1c (HEAD -> master, tag: v1.0, origin/master)
Author: zhudengkai <[email protected]>
Date:   Wed Apr 8 20:26:02 2020 +0800

    add b.txt

diff --git a/b.txt b/b.txt
new file mode 100644
index 0000000..e69de29

還可以通過 git log --decorate來查看標籤

$ git log --decorate --oneline
0f7f905 (HEAD -> master, tag: v1.0, origin/master) add b.txt
2d19ca3 add a.txt

上面的--oneline的參數不是必須的,只是爲了簡化輸出。

後期打標籤

上面通過git tag <tag-name>的方式,會直接把標籤打到當前的提交上,但是當你需要對之前的提交進行打標籤時,可以採用如下兩種方式

第一種方式,checkout到指定提交,具體操作是

  1. 通過 git chexkout <commit-id> ,切換到想要打標籤的提交
  2. 通過 git tag <tag-name> 在對應的提交上打標籤
  3. 通過 git checkout <branch-name> ,再切換到你之前的分支上

第二種方式,使用git tag -a <tag-name> <commit-id>命令,此時會調起vim編輯器,讓輸入一個提交消息。

兩種方式對比的話,第二種方式再操作上比較簡單,但第一種方式更加純粹一些。由於我喜歡輕量級的標籤,所以我更喜歡用第一種方式。

將標籤推送到遠程git倉庫

通過 git push origin <tag-name> 可以將當前tag推送到遠程倉庫

下面的命令將 v1.0 這個tag推送到遠程倉庫

git push origin v1.0
Total 0 (delta 0), reused 0 (delta 0)
To github.com:kaige11/demo-repo.git
 * [new tag]         v1.0 -> v1.0

也可以通過下面的命令來將本地所有的標籤一次性推送到遠程倉庫中

git push origin --tags

刪除標籤

刪除本地標籤

git tag -d <tag-name>

刪除遠程標籤

git push origin --delete <tag-name>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章