git tag
本文於2018年1月3號釋出在個人部落格中,因為個人部落格關閉,全部遷移到CSDN,以下是正文:
隨著時間的流逝,程式設計師一次又一次的往倉庫中提交程式碼,直到又一次提交完成之後,專案經理宣佈:“到此刻為止,我們1.0版本的開發完成了”
今天來說說git中跟版本釋出相關的特性:git tag。本文將按照如下流程進行講解:
- 關於tag
- 建立tag
- 提交tag
- 檢出tag
- 刪除tag
關於tag
tag用來標記某個提交的重要性,可以用作版本釋出的標記。當把tag push到github,可以在release中看到:
git中的tag有兩種:
- 輕量級tag(lightweight),“一個輕量標籤很像一個不會改變的分支 – 它只是一個特定提交的引用”(引用自progit中文版)
- 附註tag,“附註標籤是儲存在 Git 資料庫中的一個完整物件。 它們是可以被校驗的;其中包含打
標籤者的名字、電子郵件地址、日期時間;還有一個標籤資訊;並且可以使用 GNU Privacy
Guard (GPG)簽名與驗證”(引用自progit中文版)
“通常建議建立附註標籤,這樣你可以擁有以上所有資訊;但是
如果你只是想用一個臨時的標籤,或者因為某些原因不想要儲存那些資訊,輕量標籤也是可
用的”(引用自progit中文版)
建立tag
不管是輕量級tag還是附註tag,都可以基於當前commit,或者指定某個commit打標籤。
基於當前commit:
輕量級tag: git tag v1.1-lw
附註tag: git tag -a v1.0 -m "before aws test"
基於指定commit:
輕量級tag: git tag v1.1-lw ${commit-SHA-1}
附註tag: git tag -a -m "before aws test" v1.0 ${commit-SHA-1}
輕量級tag
輕量標籤本質上是將提交校驗和儲存到一個檔案中 – 沒有儲存任何其他資訊。 建立輕量標籤,不需要使用 -a 、 -s 或 -m 選項,只需要提供標籤名字:
$ git tag v1.1-lw 3a0b882ff42121f72f2490d9c1eced342cbcdef0
$ git tag
v1.0
v1.1-lw
$ git show v1.1-lw
commit 3a0b882ff42121f72f2490d9c1eced342cbcdef0 (tag: v1.1-lw)
Author: anyscoding <34288556+anyscoding@users.noreply.github.com>
Date: Tue Dec 12 11:51:57 2017 +0800
delete lines for aws test
diff --git a/README.md b/README.md
index 5d7e7d1..3f5c828 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,2 @@
# HelloWorld
this is my first project on github
-
-add new line for aws test build action output
-
-add new line for aws test build action output
可以看出,git show 輕量級標籤,標籤所在的commit的資訊
附註tag
$ git tag -a -m "before aws test" v1.0 cce0567986c702792a28ff510fef6c585e68344f
$ git tag
v1.0
v1.1-lw
$ git show v1.0
tag v1.0
Tagger: anyscoding <anyscoding@sina.com>
Date: Wed Jan 3 07:27:58 2018 +0800
before aws test
commit cce0567986c702792a28ff510fef6c585e68344f (tag: v1.0)
Author: anyscoding <34288556+anyscoding@users.noreply.github.com>
Date: Tue Dec 12 10:28:14 2017 +0800
Update README.md
diff --git a/README.md b/README.md
index 64ee367..417cbd9 100644
--- a/README.md
+++ b/README.md
@@ -2,3 +2,5 @@
this is my first project on github
add new line
+
+add new line for aws codepipeline
當使用git show檢視一個附註tag時,除了顯示打標籤的commit資訊外,還會顯示tag本身的資訊,包括:tag名稱、打tag的人、打tag的時間
提交tag
本地打好的tag,要如何共享出去呢?
git push origin v1.0
Counting objects: 1, done.
Writing objects: 100% (1/1), 159 bytes | 159.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
To github.com:anyscoding/HelloWorld.git
* [new tag] v1.0 -> v1.0
如果本地打了多個tag,想要一次性全部共享出去:
$ git tag
v1.0
v1.1
v1.2
$ git push origin --tags
Counting objects: 2, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (2/2), 273 bytes | 273.00 KiB/s, done.
Total 2 (delta 0), reused 0 (delta 0)
To github.com:anyscoding/HelloWorld.git
* [new tag] v1.1 -> v1.1
* [new tag] v1.2 -> v1.2
在github上檢視:
檢出tag
如果想要檢視打tag的狀態,常見的場景是:從某個tag重新出釋出包,可以通過如下命令:
git checkou ${tag-name}
$ git checkout v1.0
Note: checking out 'v1.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at cce0567... Update README.md
an@DESKTOP-IEU7HQD MINGW64 /d/GitHub/HelloWorld ((v1.0))
刪除tag
tag建立錯誤,或者由於其他什麼原因,需要刪除某個tag。包括刪除本地tag和刪除遠端tag
刪除本地tag
git tag -d ${tag-name}
$ git tag -d v1.1
Deleted tag 'v1.1' (was c67a1ab)
刪除遠端tag
git push origin :refs/tags/${tag-name}
$ git push origin :refs/tags/v1.1
To github.com:anyscoding/HelloWorld.git
- [deleted] v1.1
再看看github上:
相關文章
- Git - TagGit
- Git tag 標籤Git
- Git (10)-- 打標籤(git tag)Git
- Git-tag標籤Git
- GIt tag 操作手冊Git
- Git刪除tag標籤Git
- Git檢視所有tag標籤Git
- Git tag標籤用法詳解Git
- Git tag標籤與branch分支 區別Git
- Git檢視tag標籤建立時間Git
- Git tag標籤與branch分支的區別Git
- 如何刪除Git倉庫中冗餘的tag?Git
- 在Visual Studio 中使用git——標記(Tag)管理(十)Git
- webpack+git開發環境將git中tag自動顯示到web中WebGit開發環境
- tag 轉 branch 前 記得 Fetch 一下 - git基礎Git
- BSP tag in CRM and JSP tag in HybrisJS
- Tag
- Jenkins自動化部署伺服器及git 提交及git tag標籤版本更新流程,超詳細!Jenkins伺服器Git
- prettier Unexpected closing tag "p". It may happen when the tag has already been closed by another tag.APP
- 易優tag TAG呼叫標籤-EyouCms手冊
- docker tag命令Docker
- docker tag save loadDocker
- [Javascript] template literal tagJavaScript
- beego tag詳解Go
- SAP Hybris Commerce的JSP tag和SAP BSP tag的比較JS
- TAG:採用TAG標準的廣告欺詐率下降94%
- github clone 指定的tagGithub
- Go語言之 Struct TagGoStruct
- 帝國CMS在IIS環境開啟TAG偽靜態後,中文TAG提示“TAG不存在”的最後解決方法!
- CF1404B. Tree Tag
- openjdk映象的tag說明JDK
- 什麼是GTM (Google Tag Manager)Go
- 1.9 - Laravel - 5.6 - tag 解析機制Laravel
- ABAP和Java的tag(marker) interfaceJava
- go中Tag的理解與使用Go
- XML tag has empty body less... (Ctrl+F1) Reports empty tag body. The validation works in XML / JSPXMLJS
- 自定義RadiusBackgroundSpan在textview設定tagTextView
- Flutter GetX Tag 屬性使用詳解Flutter