git 入門教程之里程碑式標籤

雪之夢技術驛站發表於2019-03-26

"春風得意馬蹄疾,一日看盡長安花",對於專案也是如此,最值得期待的恐怕就要數新版本釋出的時刻了吧?每當釋出新版本時要麼是版本號命名(比如v0.0.1)或者代號命名(比如Chelsea),不管怎麼說這種里程碑階段總是要留下些許紀念意義.

既然想要紀念這種特殊的歷史時刻,自然是希望它能夠固定下來,不要發生隨意移動,產生不可預期後果.

這種需求其實和我們前面說的分支概念很相似,均是源於特殊的版本號,逐漸收集起一系列版本,最終形成一條相對獨立的歷史線,但分支並不是實現里程碑概念的最佳選擇,為什麼?

分支適合多人協作開發時互不影響,適當時機主動合併他人工作成果這種模式,而這種模式是由不同的功能模組進行驅動的,正所謂"天下大勢分久必合,合久必分",當功能模組開發完畢後自然也就沒有分支存在的必要性,更何況分支在收集版本的過程中會一直移動,並沒有特殊的固定版本,顯然分支不是最佳選擇!

但是,分支確定一定程度上和里程碑概念很相似,源於特定版本,自主命名,收集版本等,那麼何必重頭再來,為何不復用已有概念呢?

實際上,git 中的標籤(tag) 就是實現里程碑概念的方式,它可以永久性指向特定的提交併將命名,然後就可以將其理解成分支一樣引用了!

但標籤(tag)不是分支(branch),標籤是一個點的話,分支就是若干點連線而成的線,標籤是靜態的,分支是動態的,標籤是隻讀的,分只是可讀可寫的.

git-tag-create.png

建立標籤 git tag <tag>

# 方式一: 預設 `HEAD` 指向的版本
git tag v0.0.1

# 方式二: 指定 `commit_id` 表示的版本
git tag v0.0.2 f971647

# 方式三: 指定 `commit_id` 表示的版本,同時建立標籤說明資訊
git tag -a v0.0.3 -m "v0.0.3" f971647
複製程式碼

git-tag.gif

列出標籤 git tag

git tag 
複製程式碼

顯示標籤 git show <tag>

git show v0.0.1
複製程式碼

刪除標籤 git tag -d <tag>

git tag -d v0.0.1
複製程式碼

推送標籤 git push origin <tag>

git push origin v0.0.1
複製程式碼

推送全部標籤 git push origin --tags

git push origin --tags
複製程式碼

刪除遠端標籤 git tag -d <tag> git push origin :refs/tags/<tag>

# 刪除本地標籤 
git tag -d v0.0.1

# 推送刪除標籤(刪除也是推送)
git push origin :refs/tags/v0.0.1
複製程式碼

相關文章