Git 基礎 - 打標簽
阿新 • • 發佈:2019-02-11
類型 pla -a 其命令 port book ... git show 現在
列出現有標簽(或者使用git tag -l)
$ git tag v0.1 v1.3
如果只對 1.4.2 系列的版本感興趣
$ git tag -l ‘v1.4.2.*‘ v1.4.2.1 v1.4.2.2 v1.4.2.3 v1.4.2.4
創建一個含附註類型的標簽
$ git tag -a v1.4 -m ‘my version 1.4‘ $ git tag v0.1 v1.3 v1.4
本地刪除tag
git tag -d test_tag
本地tag刪除了,再執行該句,刪除線上tag
git push origin :test_tag
//或者
git push origin --delete tag test_tag
在某個commit 上打tag
git tag test_tag c809ddbf83939a89659e51dc2a5fe183af384233
查看相應標簽的版本信息,並連同顯示打標簽時的提交對象
$ git show v1.4 tag v1.4 Tagger: Scott Chacon <[email protected]> Date: Mon Feb 9 14:45:11 2009 -0800 my version 1.4 commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... Author: Scott Chacon<[email protected]> Date: Sun Feb 8 19:02:46 2009 -0800 Merge branch ‘experiment‘
簽署標簽
如果你有自己的私鑰,還可以用 GPG 來簽署標簽,只需要把之前的 -a
改為 -s
(譯註: 取 signed
的首字母)即可
$ git tag -s v1.5 -m ‘my signed 1.5 tag‘ You need a passphrase to unlock the secret key for user: "Scott Chacon <[email protected]>" 1024-bit DSA key, ID F721C45A, created 2009-02-09
現在再運行 git show
會看到對應的 GPG 簽名也附在其內
$ git show v1.5 tag v1.5 Tagger: Scott Chacon <[email protected]> Date: Mon Feb 9 15:22:20 2009 -0800 my signed 1.5 tag -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (Darwin) iEYEABECAAYFAkmQurIACgkQON3DxfchxFr5cACeIMN+ZxLKggJQf0QYiQBwgySN Ki0An2JeAVUCAiJ7Ox6ZEtK+NvZAj82/ =WryJ -----END PGP SIGNATURE----- commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... Author: Scott Chacon <[email protected]> Date: Sun Feb 8 19:02:46 2009 -0800 Merge branch ‘experiment‘
輕量級標簽
輕量級標簽實際上就是一個保存著對應提交對象的校驗和信息的文件。要創建這樣的標簽,直接給出標簽名字即可
$ git tag v1.4-lw $ git tag v0.1 v1.3 v1.4 v1.4-lw v1.5
運行 git show
查看此標簽信息,就只有相應的提交對象摘要
$ git show v1.4-lw commit 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge: 4a447f7... a6b4c97... Author: Scott Chacon <[email protected]> Date: Sun Feb 8 19:02:46 2009 -0800 Merge branch ‘experiment‘
驗證標簽
可以使用 git tag -v [tag-name]
(譯註:取 verify
的首字母)的方式驗證已經簽署的標簽。此命令會調用 GPG 來驗證簽名,所以你需要有簽署者的公鑰,存放在 keyring 中,才能驗證
$ git tag -v v1.4.2.1 object 883653babd8ee7ea23e6a5c392bb739348b1eb61 type commit tag v1.4.2.1 tagger Junio C Hamano <[email protected]> 1158138501 -0700 GIT 1.4.2.1 Minor fixes since 1.4.2, including git-mv and git-http with alternates. gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A gpg: Good signature from "Junio C Hamano <[email protected]>" gpg: aka "[jpeg image of size 1513]" Primary key fingerprint: 3565 2A26 2040 E066 C9A7 4A7D C0C6 D9A4 F311 9B9A
若是沒有簽署者的公鑰,會報告類似下面這樣的錯誤
gpg: Signature made Wed Sep 13 02:08:25 2006 PDT using DSA key ID F3119B9A gpg: Can‘t check signature: public key not found error: could not verify the tag ‘v1.4.2.1‘
後期加註標簽
你甚至可以在後期對早先的某次提交加註標簽。比如在下面展示的提交歷史中
$ git log --pretty=oneline 15027957951b64cf874c3557a0f3547bd83b3ff6 Merge branch ‘experiment‘ a6b4c97498bd301d84096da251c98a07c7723e65 beginning write support 0d52aaab4479697da7686c15f77a3d64d9165190 one more thing 6d52a271eda8725415634dd79daabbc4d9b6008e Merge branch ‘experiment‘ 0b7434d86859cc7b8c3d5e1dddfed66ff742fcbc added a commit function 4682c3261057305bdd616e23b64b0857d832627b added a todo file 166ae0c4d3f420721acbb115cc33848dfcc2121a started write support 9fceb02d0ae598e95dc970b74767f19372d61af8 updated rakefile 964f16d36dfccde844893cac5b347e7b3d44abbc commit the todo 8a5cbc430f1a9c3d00faaeffd07798508422908a updated readme
我們忘了在提交 “updated rakefile” 後為此項目打上版本號 v1.2,沒關系,現在也能做。只要在打標簽的時候跟上對應提交對象的校驗和(或前幾位字符)即可:
$ git tag -a v1.2 9fceb02
可以看到我們已經補上了標簽
$ git tag v0.1 v1.2 v1.3 v1.4 v1.4-lw v1.5 $ git show v1.2 tag v1.2 Tagger: Scott Chacon <[email protected]> Date: Mon Feb 9 15:32:16 2009 -0800 version 1.2 commit 9fceb02d0ae598e95dc970b74767f19372d61af8 Author: Magnus Chacon <[email protected]> Date: Sun Apr 27 20:43:35 2008 -0700 updated rakefile ...
分享標簽
默認情況下,git push
並不會把標簽傳送到遠端服務器上,只有通過顯式命令才能分享標簽到遠端倉庫。其命令格式如同推送分支,運行 git push origin [tagname]
即可
$ git push origin v1.5 Counting objects: 50, done. Compressing objects: 100% (38/38), done. Writing objects: 100% (44/44), 4.56 KiB, done. Total 44 (delta 18), reused 8 (delta 1) To [email protected]:schacon/simplegit.git * [new tag] v1.5 -> v1.5
如果要一次推送所有本地新增的標簽上去,可以使用 --tags
選項
$ git push origin --tags Counting objects: 50, done. Compressing objects: 100% (38/38), done. Writing objects: 100% (44/44), 4.56 KiB, done. Total 44 (delta 18), reused 8 (delta 1) To [email protected]:schacon/simplegit.git * [new tag] v0.1 -> v0.1 * [new tag] v1.2 -> v1.2 * [new tag] v1.4 -> v1.4 * [new tag] v1.4-lw -> v1.4-lw * [new tag] v1.5 -> v1.5
Git 基礎 - 打標簽