<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://jiva.dila.edu.tw/index.php?action=history&amp;feed=atom&amp;title=Pro_Git_2.6_%E8%B2%BC%E6%A8%99%E7%B1%A4</id>
	<title>Pro Git 2.6 貼標籤 - 修訂歷史</title>
	<link rel="self" type="application/atom+xml" href="https://jiva.dila.edu.tw/index.php?action=history&amp;feed=atom&amp;title=Pro_Git_2.6_%E8%B2%BC%E6%A8%99%E7%B1%A4"/>
	<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.6_%E8%B2%BC%E6%A8%99%E7%B1%A4&amp;action=history"/>
	<updated>2026-05-05T16:55:35Z</updated>
	<subtitle>本 Wiki 上此頁面的修訂歷史</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.6_%E8%B2%BC%E6%A8%99%E7%B1%A4&amp;diff=528&amp;oldid=prev</id>
		<title>imported&gt;Ray：​新頁面: 同大多數 VCS 一樣，Git 也可以對某一時間點上的版本打上標籤。人們在發佈某個軟體版本（比如 v1.0 等等）的時候，經常這麼做。本節我們一...</title>
		<link rel="alternate" type="text/html" href="https://jiva.dila.edu.tw/index.php?title=Pro_Git_2.6_%E8%B2%BC%E6%A8%99%E7%B1%A4&amp;diff=528&amp;oldid=prev"/>
		<updated>2011-05-24T08:45:08Z</updated>

		<summary type="html">&lt;p&gt;新頁面: 同大多數 VCS 一樣，Git 也可以對某一時間點上的版本打上標籤。人們在發佈某個軟體版本（比如 v1.0 等等）的時候，經常這麼做。本節我們一...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;同大多數 VCS 一樣，Git 也可以對某一時間點上的版本打上標籤。人們在發佈某個軟體版本（比如 v1.0 等等）的時候，經常這麼做。本節我們一起來學習如何列出所有可用的標籤，如何新建標籤，以及各種不同類型標籤之間的差別。&lt;br /&gt;
&lt;br /&gt;
=列出已有的標籤=&lt;br /&gt;
&lt;br /&gt;
列出現有標籤的命令非常簡單，直接運行 git tag 即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag&lt;br /&gt;
v0.1&lt;br /&gt;
v1.3&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
顯示的標籤按字母順序排列，所以標籤的先後並不表示重要程度的輕重。&lt;br /&gt;
&lt;br /&gt;
我們可以用特定的搜索模式列出符合條件的標籤。在 Git 自身專案倉庫中，有著超過 240 個標籤，如果你只對 1.4.2 系列的版本感興趣，可以運行下面的命令：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag -l 'v1.4.2.*'&lt;br /&gt;
v1.4.2.1&lt;br /&gt;
v1.4.2.2&lt;br /&gt;
v1.4.2.3&lt;br /&gt;
v1.4.2.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=新建標籤=&lt;br /&gt;
&lt;br /&gt;
Git 使用的標籤有兩種類型：羽量級的（lightweight）和含附注的（annotated）。羽量級標籤就像是個不會變化的分支，實際上它就是個指向特定提交物件的引用。而含附注標籤，實際上是存儲在倉庫中的一個獨立物件，它有自身的校驗(checksum)和資訊，包含著標籤的名字，電子郵寄地址和日期，以及標籤說明，標籤本身也允許使用 GNU Privacy Guard (GPG) 來簽署或驗證。一般我們都建議使用含附注型的標籤，以便保留相關資訊；當然，如果只是臨時性加注標籤，或者不需要旁注額外資訊，用羽量級標籤也沒問題。&lt;br /&gt;
&lt;br /&gt;
=含附注的標籤=&lt;br /&gt;
&lt;br /&gt;
創建一個含附注類型的標籤非常簡單，用 -a （譯注：取 annotated 的首字母）指定標籤名字即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag -a v1.4 -m 'my version 1.4'&lt;br /&gt;
$ git tag&lt;br /&gt;
v0.1&lt;br /&gt;
v1.3&lt;br /&gt;
v1.4&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
而 -m 選項則指定了對應的標籤說明，Git 會將此說明一同保存在標籤物件中。如果在此選項後沒有給出具體的說明內容，Git 會啟動文本編輯軟體供你輸入。&lt;br /&gt;
&lt;br /&gt;
可以使用 git show 命令查看相應標籤的版本資訊，並連同顯示打標籤時的提交物件。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git show v1.4&lt;br /&gt;
tag v1.4&lt;br /&gt;
Tagger: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Mon Feb 9 14:45:11 2009 -0800&lt;br /&gt;
&lt;br /&gt;
my version 1.4&lt;br /&gt;
commit 15027957951b64cf874c3557a0f3547bd83b3ff6&lt;br /&gt;
Merge: 4a447f7... a6b4c97...&lt;br /&gt;
Author: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Sun Feb 8 19:02:46 2009 -0800&lt;br /&gt;
&lt;br /&gt;
    Merge branch 'experiment'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
我們可以看到在提交物件資訊上面，列出了此標籤的提交者和提交時間，以及相應的標籤說明。&lt;br /&gt;
&lt;br /&gt;
=簽署標籤=&lt;br /&gt;
&lt;br /&gt;
如果你有自己的私密金鑰，還可以用 GPG 來簽署標籤，只需要把之前的 -a 改為 -s （譯注： 取 Signed 的首字母）即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag -s v1.5 -m 'my signed 1.5 tag'&lt;br /&gt;
You need a passphrase to unlock the secret key for&lt;br /&gt;
user: &amp;quot;Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&amp;quot;&lt;br /&gt;
1024-bit DSA key, ID F721C45A, created 2009-02-09&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在再執行 git show 會看到對應的 GPG 簽名也附在其內：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git show v1.5&lt;br /&gt;
tag v1.5&lt;br /&gt;
Tagger: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Mon Feb 9 15:22:20 2009 -0800&lt;br /&gt;
&lt;br /&gt;
my signed 1.5 tag&lt;br /&gt;
-----BEGIN PGP SIGNATURE-----&lt;br /&gt;
Version: GnuPG v1.4.8 (Darwin)&lt;br /&gt;
&lt;br /&gt;
iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN&lt;br /&gt;
Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/&lt;br /&gt;
=WryJ&lt;br /&gt;
-----END PGP SIGNATURE-----&lt;br /&gt;
commit 15027957951b64cf874c3557a0f3547bd83b3ff6&lt;br /&gt;
Merge: 4a447f7... a6b4c97...&lt;br /&gt;
Author: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Sun Feb 8 19:02:46 2009 -0800&lt;br /&gt;
&lt;br /&gt;
    Merge branch 'experiment'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
稍後我們再學習如何驗證已經簽署的標籤。&lt;br /&gt;
&lt;br /&gt;
=羽量級標籤=&lt;br /&gt;
&lt;br /&gt;
羽量級標籤實際上就是一個保存著對應提交物件的校驗和資訊的檔。要創建這樣的標籤，一個 -a，-s 或 -m 選項都不用，直接給出標籤名字即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag v1.4-lw&lt;br /&gt;
$ git tag&lt;br /&gt;
v0.1&lt;br /&gt;
v1.3&lt;br /&gt;
v1.4&lt;br /&gt;
v1.4-lw&lt;br /&gt;
v1.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在運行 git show 查看此標籤資訊，就只有相應的提交物件摘要：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git show v1.4-lw&lt;br /&gt;
commit 15027957951b64cf874c3557a0f3547bd83b3ff6&lt;br /&gt;
Merge: 4a447f7... a6b4c97...&lt;br /&gt;
Author: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Sun Feb 8 19:02:46 2009 -0800&lt;br /&gt;
&lt;br /&gt;
    Merge branch 'experiment'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=驗證標籤=&lt;br /&gt;
&lt;br /&gt;
可以使用 git tag -v [tag-name] （譯注：取 verify 的首字母）的方式驗證已經簽署的標籤。此命令會調用 GPG 來驗證簽名，所以你需要有簽署者的公開金鑰，存放在 keyring 中，才能驗證：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag -v v1.4.2.1&lt;br /&gt;
object 883653babd8ee7ea23e6a5c392bb739348b1eb61&lt;br /&gt;
type commit&lt;br /&gt;
tag v1.4.2.1&lt;br /&gt;
tagger Junio C Hamano &amp;lt;junkio@cox.net&amp;gt; 1158138501 -0700&lt;br /&gt;
&lt;br /&gt;
GIT 1.4.2.1&lt;br /&gt;
&lt;br /&gt;
Minor fixes since 1.4.2, including git-mv and git-http with alternates.&lt;br /&gt;
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A&lt;br /&gt;
gpg: Good signature from &amp;quot;Junio C Hamano &amp;lt;junkio@cox.net&amp;gt;&amp;quot;&lt;br /&gt;
gpg:                 aka &amp;quot;[jpeg image of size 1513]&amp;quot;&lt;br /&gt;
Primary key fingerprint: 3565 2A26 2040 E066 C9A7  4A7D C0C6 D9A4 F311 9B9A&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
若是沒有簽署者的公開金鑰，會報告類似下面這樣的錯誤：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A&lt;br /&gt;
gpg: Can't check signature: public key not found&lt;br /&gt;
error: could not verify the tag 'v1.4.2.1'&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=後期加注標籤=&lt;br /&gt;
&lt;br /&gt;
你甚至可以在後期對早先的某次提交加注標籤。比如在下面展示的提交歷史中：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git log --pretty=oneline&lt;br /&gt;
15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch 'experiment'&lt;br /&gt;
a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support&lt;br /&gt;
0d52aaab4479697da7686c15f77a3d64d9165190 one more thing&lt;br /&gt;
6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch 'experiment'&lt;br /&gt;
0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function&lt;br /&gt;
4682c3261057305bdd616e23b64b0857d832627b added a todo file&lt;br /&gt;
166ae0c4d3f420721acbb115cc33848dfcc2121a started write support&lt;br /&gt;
9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile&lt;br /&gt;
964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo&lt;br /&gt;
8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
我們忘了在提交 “updated rakefile” 後為此項目打上版本號 v1.2，沒關係，現在也能做。只要在打標籤的時候跟上對應提交物件的校驗和（或前幾位元字元）即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag -a v1.2 9fceb02&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可以看到我們已經補上了標籤：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git tag &lt;br /&gt;
v0.1&lt;br /&gt;
v1.2&lt;br /&gt;
v1.3&lt;br /&gt;
v1.4&lt;br /&gt;
v1.4-lw&lt;br /&gt;
v1.5&lt;br /&gt;
&lt;br /&gt;
$ git show v1.2&lt;br /&gt;
tag v1.2&lt;br /&gt;
Tagger: Scott Chacon &amp;lt;schacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Mon Feb 9 15:32:16 2009 -0800&lt;br /&gt;
&lt;br /&gt;
version 1.2&lt;br /&gt;
commit 9fceb02d0ae598e95dc970b74767f19372d61af8&lt;br /&gt;
Author: Magnus Chacon &amp;lt;mchacon@gee-mail.com&amp;gt;&lt;br /&gt;
Date:   Sun Apr 27 20:43:35 2008 -0700&lt;br /&gt;
&lt;br /&gt;
    updated rakefile&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=分享標籤=&lt;br /&gt;
&lt;br /&gt;
預設情況下，git push 並不會把標籤傳送到遠端伺服器上，只有通過顯式命令才能分享標籤到遠端倉庫。其命令格式如同推送分支，運行 git push origin [tagname] 即可：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git push origin v1.5&lt;br /&gt;
Counting objects: 50, done.&lt;br /&gt;
Compressing objects: 100% (38/38), done.&lt;br /&gt;
Writing objects: 100% (44/44), 4.56 KiB, done.&lt;br /&gt;
Total 44 (delta 18), reused 8 (delta 1)&lt;br /&gt;
To git@github.com:schacon/simplegit.git&lt;br /&gt;
* [new tag]         v1.5 -&amp;gt; v1.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果要一次推送所有（本地新增的）標籤上去，可以使用 --tags 選項：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;XML&amp;quot;&amp;gt;&lt;br /&gt;
$ git push origin --tags&lt;br /&gt;
Counting objects: 50, done.&lt;br /&gt;
Compressing objects: 100% (38/38), done.&lt;br /&gt;
Writing objects: 100% (44/44), 4.56 KiB, done.&lt;br /&gt;
Total 44 (delta 18), reused 8 (delta 1)&lt;br /&gt;
To git@github.com:schacon/simplegit.git&lt;br /&gt;
 * [new tag]         v0.1 -&amp;gt; v0.1&lt;br /&gt;
 * [new tag]         v1.2 -&amp;gt; v1.2&lt;br /&gt;
 * [new tag]         v1.4 -&amp;gt; v1.4&lt;br /&gt;
 * [new tag]         v1.4-lw -&amp;gt; v1.4-lw&lt;br /&gt;
 * [new tag]         v1.5 -&amp;gt; v1.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
現在，其他人克隆共用倉庫或拉取資料同步後，也會看到這些標籤。&lt;/div&gt;</summary>
		<author><name>imported&gt;Ray</name></author>
	</entry>
</feed>