最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Git基礎(chǔ)學(xué)習(xí)之tag標(biāo)簽操作詳解

 更新時(shí)間:2022年10月20日 11:15:06   作者:繁華似錦Fighting  
標(biāo)簽對(duì)象(tag?object)?非常類似于一個(gè)提交對(duì)象,它包含一個(gè)標(biāo)簽創(chuàng)建者信息、一個(gè)日期、一段注釋信息,以及一個(gè)指針。本文主要介紹了Git標(biāo)簽tag的一些基礎(chǔ)操作,需要的可以參考一下

共享標(biāo)簽

默認(rèn)情況下,git push 命令并不會(huì)傳送標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器上。

在創(chuàng)建完標(biāo)簽后,你必須顯式地(手動(dòng))推送標(biāo)簽到遠(yuǎn)程服務(wù)器上。

需要將標(biāo)簽推送到遠(yuǎn)程版本庫(kù)作為一個(gè)發(fā)行版本,可以通過以下兩種方式:

推送本地的指定標(biāo)簽

這個(gè)過程就像共享遠(yuǎn)程分支一樣,你可以執(zhí)行命令: 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

推送本地所有為推送的標(biāo)簽

如果想要一次性推送很多標(biāo)簽,也可以使用帶有 --tags 選項(xiàng)的 git push 命令。

這將會(huì)把所有不在遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器上的標(biāo)簽全部推送過去。

$ 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

當(dāng)然其他人從倉(cāng)庫(kù)中克隆或拉取,他們也能得到你的那些標(biāo)簽。

說明:

  • git push 推送兩種標(biāo)簽使用 git push <remote> --tags 命令(remote:遠(yuǎn)程倉(cāng)庫(kù))。
  • 推送標(biāo)簽并不會(huì)區(qū)分輕量標(biāo)簽和附注標(biāo)簽, 沒有選項(xiàng)能夠讓你只選擇一種標(biāo)簽進(jìn)行推送。

查看結(jié)果

登錄GitHub并打開遠(yuǎn)程版本庫(kù)頁面,在release中可以查看推送到遠(yuǎn)程庫(kù)中的標(biāo)簽,即發(fā)行版本。

其他用戶在更新本地版本庫(kù)時(shí),同時(shí)會(huì)將標(biāo)簽一并更新,然后可以在本地指定標(biāo)簽版本上,作一個(gè)新的分支進(jìn)行開發(fā),開發(fā)完成后再合并到主要分支上,最后將該分支刪除。

刪除標(biāo)簽

刪除本地標(biāo)簽

要?jiǎng)h除掉本地倉(cāng)庫(kù)上的標(biāo)簽,可以使用命令 git tag -d <tagname>。

例如,可以使用以下命令刪除一個(gè)輕量標(biāo)簽:

$ git tag -d v1.4-lw
Deleted tag 'v1.4-lw' (was e7d5add)

注意上述命令并不會(huì)從任何遠(yuǎn)程倉(cāng)庫(kù)中移除這個(gè)標(biāo)簽。

刪除遠(yuǎn)程標(biāo)簽

你必須用命令: git push <remote> :refs/tags/<tagname> 來更新你的遠(yuǎn)程倉(cāng)庫(kù)。

提示:若要?jiǎng)h除遠(yuǎn)程庫(kù)中的標(biāo)簽,首先要?jiǎng)h除本地庫(kù)中的該標(biāo)簽,然后再運(yùn)行上面的命令。

第一種方式是 git push <remote遠(yuǎn)程庫(kù)> :refs/tags/<tagname> :

$ git push origin :refs/tags/v1.4-lw
To /git@github.com:schacon/simplegit.git
 - [deleted]         v1.4-lw

上面這種操作的含義是,將冒號(hào)前面的空值推送到遠(yuǎn)程標(biāo)簽名,從而高效地刪除它。

第二種更直觀的刪除遠(yuǎn)程標(biāo)簽的方式是:

$ git push origin遠(yuǎn)程庫(kù) --delete <tagname>

修改標(biāo)簽指定提交的代碼

問題一:

軟件版本一旦被指定,即標(biāo)簽一旦與某一commit-id綁定,那么這個(gè)版本(提交)的代碼還能修改嗎?

  • 若將master分支回退到該commit-id,然后再修改代碼,修改完成后再提交,我們會(huì)發(fā)現(xiàn)該提交代碼修改過了,但該標(biāo)簽綁定的commit-id并沒有發(fā)生變化,即該軟件版本(標(biāo)簽)指向的代碼仍未修改。(也就是標(biāo)簽指向的提交沒有改變)
  • 當(dāng)然,此時(shí)我們可以將該標(biāo)簽刪除,然后再定義一個(gè)同名標(biāo)簽,與修改過代碼的提交進(jìn)行綁定,這樣也是可以的。

問題二:

但是如上操作存在一個(gè)巨大的風(fēng)險(xiǎn),我們修改過的代碼是master主分支上的,一旦修改過的代碼出現(xiàn)問題,將可以導(dǎo)致整個(gè)代碼出問題。所以,我們一般不會(huì)修改master主分支上的代碼。那應(yīng)該怎么辦?

  • Git將標(biāo)簽定義為與分支同級(jí)別的概念,它不僅是一個(gè)提交的別名。
  • Git允許程序員使用分支切換命令git checkout ,將代碼轉(zhuǎn)向標(biāo)簽所指定的版本。

小示例:

# 1.查看當(dāng)前版本庫(kù)分支
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git tag
v1.0
v2.0

# 2.切換到v1.0標(biāo)簽上
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版內(nèi)容

L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learning_github ((v1.0))
$

如上,命令執(zhí)行完畢,系統(tǒng)給出了很多的提示,該提示的總體意思為:當(dāng)前處于“分離頭指針”狀態(tài),在該狀態(tài)下用戶的任何修改與提交對(duì)任何的分支都沒有影響(言外之意是:其修改將不會(huì)被保留)。若想要保留修改,則可以通過git checkout -b命令,創(chuàng)建一個(gè)新的分支。

這里特別要注意一點(diǎn),就是最后一行命令提示符末尾的((v1.0)),說明此時(shí)HEAD指針,指向了v1.0標(biāo)簽。

繼續(xù)執(zhí)行命令:

# 3.執(zhí)行g(shù)it 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)標(biāo)簽指向了newbranch分支上。在該新分支上再進(jìn)行修改提交,然后再合并到master分支,最后再將該分支刪除,此時(shí)創(chuàng)建的分支名稱可以隨意。

當(dāng)newbranch分支合并到master分支后,仍需要?jiǎng)h除原標(biāo)簽,然后再與新的commit-id綁定。所以,生產(chǎn)環(huán)境下,一旦標(biāo)簽定義完成,就不會(huì)對(duì)標(biāo)簽進(jìn)行刪除再綁定。而是會(huì)再定義一個(gè)新的標(biāo)簽與新的提交綁定。

標(biāo)簽在.git目錄中的位置

無論是輕量標(biāo)簽還是附注標(biāo)簽,他們都會(huì)存在在.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標(biāo)簽的內(nèi)容
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標(biāo)簽內(nèi)容中object的類型
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git cat-file -t  b97ccfd5f3e98c12
commit
# 我們可以看到object對(duì)象的類型是commit對(duì)象,
# 是一個(gè)提交,所以索引的是一個(gè)提交。

# 4.查看V1.0標(biāo)簽文件中的內(nèi)容,可以看到也是一個(gè)對(duì)象的索引
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ cat .git/refs/tags/v1.0
e086427dfe88d8cd370d2f94eaf8610c169a3333

# 5.查看這個(gè)對(duì)象的類型
L@DESKTOP-T2AI2SU MINGW64 /j/git-repository/learngit (master)
$ git cat-file -t e086427
tag
# 我們可以查看該對(duì)象是一個(gè)標(biāo)簽對(duì)象。

# 6.我們也可以通過tag對(duì)象的索引值,查看內(nèi)容,
# 和上邊git cat-file tag v1.0命令顯示的內(nèi)容是一樣的。
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 里程碑

總結(jié)來說:

  • Git中的標(biāo)簽,都會(huì)以文件的形式存儲(chǔ)在.git/refs/tags目錄中。
  • 文件中記錄的是tag標(biāo)簽的校驗(yàn)和(索引值)。
  • 通過索引值或者標(biāo)簽名可以查看該tag對(duì)象的內(nèi)容。
  • tag對(duì)象的內(nèi)容就包括他指向的commit。其實(shí)tag對(duì)象就是對(duì)commit對(duì)象的一個(gè)封裝。

本文中所使用到的命令

git tag:查看版本庫(kù)中的標(biāo)簽列表。

git tag -l "v1.8.5*":查看版本庫(kù)中,可匹配的標(biāo)簽列表。

git tag -a 標(biāo)簽名 -m '說明信息':當(dāng)前分支最新一次提交打標(biāo)簽。

git tag -a 標(biāo)簽名 commit-id -m '說明信息':為之前的提交打標(biāo)簽。

git tag 標(biāo)簽名:創(chuàng)建輕量標(biāo)簽。

git push 遠(yuǎn)程倉(cāng)庫(kù)名 標(biāo)簽名:推送標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)。

git push 遠(yuǎn)程倉(cāng)庫(kù)名 --tags:推送所有標(biāo)簽到遠(yuǎn)程倉(cāng)庫(kù)。

git tag -d 標(biāo)簽名 :刪除本地版本庫(kù)中的標(biāo)簽。

git show 標(biāo)簽名:擦看標(biāo)簽的具體信息。

到此這篇關(guān)于Git基礎(chǔ)學(xué)習(xí)之tag標(biāo)簽操作詳解的文章就介紹到這了,更多相關(guān)Git內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在ubuntu18.04版本安裝vscode(2種)

    在ubuntu18.04版本安裝vscode(2種)

    這篇文章主要介紹了在ubuntu18.04版本安裝vscode,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    Git基礎(chǔ)學(xué)習(xí)之分支操作的示例詳解

    這篇文章主要為大家詳細(xì)介紹了Git基礎(chǔ)學(xué)習(xí)中分支的基本操作,文中的示例代碼講解詳細(xì),對(duì)我們了解Git有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-10-10
  • 解決IDEA中g(shù)it拉取代碼時(shí)出現(xiàn)Update canceled問題

    解決IDEA中g(shù)it拉取代碼時(shí)出現(xiàn)Update canceled問題

    這篇文章主要介紹了解決IDEA中g(shù)it拉取代碼時(shí)出現(xiàn)Update canceled問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • IDEA使用code?with?me來進(jìn)行多人遠(yuǎn)程編程的實(shí)現(xiàn)

    IDEA使用code?with?me來進(jìn)行多人遠(yuǎn)程編程的實(shí)現(xiàn)

    本文主要介紹了IDEA使用code?with?me來進(jìn)行多人遠(yuǎn)程編程的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解git reset --hard 和 git reset --soft區(qū)別

    詳解git reset --hard 和 git reset --soft區(qū)別

    這篇文章主要介紹了詳解git reset --hard 和 git reset --soft區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 解決SecureCRT通過SSH連接Ubuntu時(shí)vi命令有多余的m的問題

    解決SecureCRT通過SSH連接Ubuntu時(shí)vi命令有多余的m的問題

    小編遇到這樣一個(gè)問題用vi命令來編輯文件的時(shí)候,在開頭和結(jié)尾有多余的字母出現(xiàn):在開頭會(huì)有多余的“m”出現(xiàn),結(jié)尾有多余的“2m”,這篇文章主要介紹了解決SecureCRT通過SSH連接Ubuntu時(shí)vi命令有多余的m的問題,需要的朋友可以參考下
    2022-09-09
  • Git初次使用時(shí)的安裝配置圖文教程

    Git初次使用時(shí)的安裝配置圖文教程

    下面小編就為大家分享一篇Git初次使用時(shí)的安裝配置圖文教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2017-11-11
  • 算法系列15天速成 第四天 五大經(jīng)典查找【上】

    算法系列15天速成 第四天 五大經(jīng)典查找【上】

    在我們的生活中,無處不存在著查找,比如找一下班里哪個(gè)mm最pl,猜一猜mm的芳齡....... 對(duì)的這些都是查找
    2013-11-11
  • IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

    IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存

    這篇文章主要介紹了IntelliJ IDEA卡死,如何優(yōu)化內(nèi)存,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 在VScode中創(chuàng)建你的代碼模板的方法

    在VScode中創(chuàng)建你的代碼模板的方法

    這篇文章主要介紹了在VScode中創(chuàng)建你的代碼模板的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論

芷江| 安西县| 莱阳市| 屏东市| 北辰区| 得荣县| 微博| 泗水县| 赣榆县| 克山县| 美姑县| 深泽县| 英超| 宁明县| 呼图壁县| 屏边| 高淳县| 富蕴县| 同仁县| 墨玉县| 淄博市| 郓城县| 吴江市| 南投市| 潼关县| 华池县| 大邑县| 新兴县| 伊宁县| 安丘市| 林西县| 贵德县| 隆化县| 儋州市| 澜沧| 肥城市| 蓝山县| 太原市| 准格尔旗| 遂昌县| 曲麻莱县|