<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
預設情況下,git push
命令並不會傳送標籤到遠端倉庫伺服器上。
在建立完標籤後,你必須顯式地(手動)推播標籤到遠端伺服器上。
需要將標籤推播到遠端版本庫作為一個發行版本,可以通過以下兩種方式:
這個過程就像共用遠端分支一樣,你可以執行命令: git push origin <tagname>
。
$ git push origin v1.5 Counting objects: 14, done. Delta compression using up to 8 threads. Compressing objects: 100% (12/12), done. Writing objects: 100% (14/14), 2.05 KiB | 0 bytes/s, done. Total 14 (delta 3), reused 0 (delta 0) To git@github.com:schacon/simplegit.git * [new tag] v1.5 -> v1.5
如果想要一次性推播很多標籤,也可以使用帶有 --tags
選項的 git push
命令。
這將會把所有不在遠端倉庫伺服器上的標籤全部推播過去。
$ git push origin --tags Counting objects: 1, done. Writing objects: 100% (1/1), 160 bytes | 0 bytes/s, done. Total 1 (delta 0), reused 0 (delta 0) To git@github.com:schacon/simplegit.git * [new tag] v1.4 -> v1.4 * [new tag] v1.4-lw -> v1.4-lw
當然其他人從倉庫中克隆或拉取,他們也能得到你的那些標籤。
說明:
git push
推播兩種標籤使用 git push <remote> --tags
命令(remote
:遠端倉庫)。登入GitHub並開啟遠端版本庫頁面,在release
中可以檢視推播到遠端庫中的標籤,即發行版本。
其他使用者在更新本地版本庫時,同時會將標籤一併更新,然後可以在本地指定標籤版本上,作一個新的分支進行開發,開發完成後再合併到主要分支上,最後將該分支刪除。
要刪除掉本地倉庫上的標籤,可以使用命令 git tag -d <tagname>
。
例如,可以使用以下命令刪除一個輕量標籤:
$ git tag -d v1.4-lw Deleted tag 'v1.4-lw' (was e7d5add)
注意上述命令並不會從任何遠端倉庫中移除這個標籤。
你必須用命令: git push <remote> :refs/tags/<tagname>
來更新你的遠端倉庫。
提示:若要刪除遠端庫中的標籤,首先要刪除本地庫中的該標籤,然後再執行上面的命令。
第一種方式是 git push <remote遠端庫> :refs/tags/<tagname>
:
$ git push origin :refs/tags/v1.4-lw To /git@github.com:schacon/simplegit.git - [deleted] v1.4-lw
上面這種操作的含義是,將冒號前面的空值推播到遠端標籤名,從而高效地刪除它。
第二種更直觀的刪除遠端標籤的方式是:
$ git push origin遠端庫 --delete <tagname>
問題一:
軟體版本一旦被指定,即標籤一旦與某一commit-id
繫結,那麼這個版本(提交)的程式碼還能修改嗎?
master
分支回退到該commit-id
,然後再修改程式碼,修改完成後再提交,我們會發現該提交程式碼修改過了,但該標籤繫結的commit-id
並沒有發生變化,即該軟體版本(標籤)指向的程式碼仍未修改。(也就是標籤指向的提交沒有改變)問題二:
但是如上操作存在一個巨大的風險,我們修改過的程式碼是master
主分支上的,一旦修改過的程式碼出現問題,將可以導致整個程式碼出問題。所以,我們一般不會修改master
主分支上的程式碼。那應該怎麼辦?
git checkout
,將程式碼轉向標籤所指定的版本。小范例:
# 1.檢視當前版本庫分支 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git tag v1.0 v2.0 # 2.切換到v1.0標籤上 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github (master) $ git checkout v1.0 Note: switching to '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 switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c <new-branch-name> Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at 69fc420 第二次提交,新增v2版內容 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github ((v1.0)) $
如上,命令執行完畢,系統給出了很多的提示,該提示的總體意思為:當前處於“分離頭指標”狀態,在該狀態下使用者的任何修改與提交對任何的分支都沒有影響(言外之意是:其修改將不會被保留)。若想要保留修改,則可以通過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 newbranch Switched to a new branch 'newbranch' L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github (newbranch) $
我們可以看到HEAD指標由(v1.0)
標籤指向了newbranch
分支上。在該新分支上再進行修改提交,然後再合併到master
分支,最後再將該分支刪除,此時建立的分支名稱可以隨意。
當newbranch
分支合併到master
分支後,仍需要刪除原標籤,然後再與新的commit-id
繫結。所以,生產環境下,一旦標籤定義完成,就不會對標籤進行刪除再繫結。而是會再定義一個新的標籤與新的提交繫結。
無論是輕量標籤還是附註標籤,他們都會存在在.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 41 4月 18 17:12 v1.0 -rw-r--r-- 1 L 197121 41 4月 19 20:46 v2.0 # 2.檢視v1.0標籤的內容 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git cat-file tag v1.0 object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7ed type commit tag v1.0 tagger sun_wk <sun_wk@126.com> 1618737173 +0800 v1.0 里程碑 # 3.檢視v1.0標籤內容中object的型別 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git cat-file -t b97ccfd5f3e98c12 commit # 我們可以看到object物件的型別是commit物件, # 是一個提交,所以索引的是一個提交。 # 4.檢視V1.0標籤檔案中的內容,可以看到也是一個物件的索引 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ cat .git/refs/tags/v1.0 e086427dfe88d8cd370d2f94eaf8610c169a3333 # 5.檢視這個物件的型別 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git cat-file -t e086427 tag # 我們可以檢視該物件是一個標籤物件。 # 6.我們也可以通過tag物件的索引值,檢視內容, # 和上邊git cat-file tag v1.0命令顯示的內容是一樣的。 L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master) $ git cat-file -p e086427 object b97ccfd5f3e98c12ab9c0fb4ca4b308e6805f7ed type commit tag v1.0 tagger sun_wk <sun_wk@126.com> 1618737173 +0800 v1.0 里程碑
總結來說:
.git/refs/tags
目錄中。tag
標籤的校驗和(索引值)。tag
物件的內容。commit
。其實tag
物件就是對commit
物件的一個封裝。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基礎學習之tag標籤操作詳解的文章就介紹到這了,更多相關Git內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45