二 『現學現忘』Git基礎 — 37、標簽tag( 二 )

如上,命令執行完畢,系統給出了很多的提示,該提示的總體意思為:當前處于“分離頭指針”狀態,在該狀態下用戶的任何修改與提交對任何的分支都沒有影響(言外之意是:其修改將不會被保留) 。若想要保留修改,則可以通過git checkout -b命令,創建一個新的分支 。
這里特別要注意一點,就是最后一行命令提示符末尾的((v1.0)),說明此時HEAD指針,指向了v1.0標簽 。
繼續執行命令:
# 3.執行git checkout -b 命令 , 是新的提交有分支指向L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github ((v1.0))$ git checkout -b newbranchSwitched to a new branch 'newbranch'L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github (newbranch)$我們可以看到HEAD指針由(v1.0)標簽指向了newbranch分支上 。在該新分支上再進行修改提交,然后再合并到master分支,最后再將該分支刪除,此時創建的分支名稱可以隨意 。
newbranch分支合并到master分支后,仍需要刪除原標簽,然后再與新的commit-id綁定 。所以,生產環境下 , 一旦標簽定義完成,就不會對標簽進行刪除再綁定 。而是會再定義一個新的標簽與新的提交綁定 。
8、標簽在.git目錄中的位置無論是輕量標簽還是附注標簽,他們都會存在在.git/refs/tags目錄中 。
# 1.查看.git/refs/tags目錄L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ ll .git/refs/tags/total 2-rw-r--r-- 1 L 197121 414月 18 17:12 v1.0-rw-r--r-- 1 L 197121 414月 19 20:46 v2.0# 2.查看v1.0標簽的內容L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file tag v1.0object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7edtype committag v1.0tagger sun_wk <sun_wk@126.com> 1618737173 +0800v1.0 里程碑# 3.查看v1.0標簽內容中object的類型L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -tb97ccfd5f3e98c12commit# 我們可以看到object對象的類型是commit對象 , # 是一個提交,所以索引的是一個提交 。# 4.查看V1.0標簽文件中的內容 , 可以看到也是一個對象的索引L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ cat .git/refs/tags/v1.0e086427dfe88d8cd370d2f94eaf8610c169a3333# 5.查看這個對象的類型L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -t e086427tag# 我們可以查看該對象是一個標簽對象 。# 6.我們也可以通過tag對象的索引值,查看內容,# 和上邊git cat-file tag v1.0命令顯示的內容是一樣的 。L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)$ git cat-file -p e086427object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7edtype committag v1.0tagger sun_wk <sun_wk@126.com> 1618737173 +0800v1.0 里程碑總結來說:

  1. Git中的標簽 , 都會以文件的形式存儲在.git/refs/tags目錄中 。
  2. 文件中記錄的是tag標簽的校驗和(索引值) 。
  3. 通過索引值或者標簽名可以查看該tag對象的內容 。
  4. tag對象的內容就包括他指向的commit 。其實tag對象就是對commit對象的一個封裝 。
9、本文中所使用到的命令
  • git tag:查看版本庫中的標簽列表 。
  • git tag -l "v1.8.5*":查看版本庫中,可匹配的標簽列表 。
  • git tag -a 標簽名 -m '說明信息':當前分支最新一次提交打標簽 。
  • git tag -a 標簽名 commit-id -m '說明信息':為之前的提交打標簽 。
  • git tag 標簽名:創建輕量標簽 。
  • git push 遠程倉庫名 標簽名:推送標簽到遠程倉庫 。
  • git push 遠程倉庫名 --tags:推送所有標簽到遠程倉庫 。
  • git tag -d 標簽名 :刪除本地版本庫中的標簽 。
  • git show 標簽名:擦看標簽的具體信息 。
【二 『現學現忘』Git基礎 — 37、標簽tag】

推薦閱讀