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

Git Tag打、切換、推送和刪除的操作指南

 更新時間:2026年05月27日 08:26:34   作者:一勺菠蘿丶  
本篇文章詳細介紹了Git標簽(tag)的的使用方法,包括標簽的定義、與分支(branch)的區(qū)別、常見操作如創(chuàng)建、查看、推送等刪除標簽,以及如何基于標簽部署代碼和切換版本,文章還提供了完整的發(fā)版流程示例和常用命令速查表,幫助開發(fā)者更高效地地地代碼版本

在 Git 項目開發(fā)中,經(jīng)常會遇到這樣的場景:

  • 項目準備上線,需要記錄一個穩(wěn)定版本
  • 后續(xù)出問題,需要回到某個歷史版本
  • 前端、后端、運維需要根據(jù)版本號部署代碼
  • Docker 鏡像、發(fā)布包、生產(chǎn)環(huán)境需要和代碼版本對應(yīng)

這個時候就會用到 Git 的 Tag。

簡單來說:

Git Tag 就是給某一次 commit 打一個固定的版本標記。

比如:

v1.0.0
v1.1.0
v2.0.0
release-2026-05-26

它可以幫助我們準確找到某個版本對應(yīng)的代碼。

一、Tag 是什么?

Git 里面的 Tag,可以理解為:

給某一次代碼提交做一個固定標記

比如你的提交歷史是這樣的:

A --- B --- C --- D --- E
          ↑
        v1.0.0

如果你在 C 這個 commit 上打了一個 v1.0.0 的 tag,那么以后不管你繼續(xù)提交多少代碼,v1.0.0 永遠都指向 C

后續(xù)你繼續(xù)開發(fā):

A --- B --- C --- D --- E
          ↑           ↑
        v1.0.0      main

這時候:

  • main 分支已經(jīng)走到了 E
  • v1.0.0 還是停在 C
  • tag 不會因為你后續(xù)修改代碼而改變

二、Tag 和 Branch 的區(qū)別

很多新手容易把 Tag 和 Branch 搞混。

可以這樣理解:

branch = 會繼續(xù)變化的開發(fā)線
tag    = 固定不變的版本快照

例如:

main 分支:一直往前開發(fā)
v1.0.0 tag:永遠指向發(fā)布 v1.0.0 時的那個 commit

Branch 適合什么?

Branch 適合開發(fā):

main
dev
feature-login
fix-order-bug

比如你要開發(fā)一個登錄功能,可以創(chuàng)建一個分支:

git checkout -b feature-login

后面你會不斷在這個分支上提交代碼。

Tag 適合什么?

Tag 適合發(fā)版:

v1.0.0
v1.1.0
v2.0.0

比如你項目上線了,就可以打一個 tag:

git tag -a v1.0.0 -m "發(fā)布 v1.0.0 版本"

以后你就可以通過這個 tag 找回上線時的代碼。

三、查看當前項目有哪些 Tag

查看本地所有 tag:

git tag

輸出示例:

v1.0.0
v1.1.0
v1.2.0

如果 tag 很多,可以模糊搜索:

git tag -l "v1.*"

輸出示例:

v1.0.0
v1.1.0
v1.2.0

四、如何打 Tag

Git 打 Tag 常見有兩種方式:

  1. 輕量 Tag
  2. 附注 Tag

實際開發(fā)中,更推薦使用 附注 Tag

五、輕量 Tag

輕量 tag 就是簡單地給當前 commit 做一個標記。

git tag v1.0.0

這個命令會給當前所在的 commit 打上 v1.0.0 標簽。

查看 tag:

git tag

查看 tag 對應(yīng)的信息:

git show v1.0.0

輕量 tag 比較簡單,但是沒有額外的說明信息,不太適合正式發(fā)版。

六、推薦方式:附注 Tag

附注 Tag 可以帶版本說明、創(chuàng)建人、創(chuàng)建時間等信息,更適合正式發(fā)布版本。

命令格式:

git tag -a 標簽名 -m "說明信息"

例如:

git tag -a v1.0.0 -m "發(fā)布 v1.0.0:完成基礎(chǔ)功能"

查看 tag 信息:

git show v1.0.0

輸出中會包含:

  • tag 名稱
  • tag 創(chuàng)建人
  • tag 創(chuàng)建時間
  • tag 說明信息
  • 對應(yīng)的 commit 信息

正式項目中建議使用這種方式。

七、給指定 commit 打 Tag

有時候你不是給當前 commit 打 tag,而是想給某個歷史 commit 打 tag。

先查看提交記錄:

git log --oneline

示例:

e8f9a12 修復(fù)庫存調(diào)撥 bug
c3a7b91 完成庫存調(diào)撥功能
a9d2c33 初始化項目

如果你想給 c3a7b91 這個 commit 打 tag:

git tag -a v1.0.0 c3a7b91 -m "發(fā)布 v1.0.0:完成庫存調(diào)撥功能"

查看:

git show v1.0.0

這樣 v1.0.0 就會指向 c3a7b91 這個 commit,而不是當前最新 commit。

八、打完 Tag 后,后續(xù)修改代碼會影響原來的 Tag 嗎?

不會。

Tag 打完之后,它會固定指向當時的 commit。

例如:

A --- B --- C
          ↑
        v1.0.0

然后你繼續(xù)開發(fā),提交了新的代碼:

A --- B --- C --- D --- E
          ↑           ↑
        v1.0.0      main

這時候:

  • v1.0.0 還是指向 C
  • main 已經(jīng)到了 E
  • 后續(xù)修改不會影響 v1.0.0

如果你要發(fā)布新版本,需要重新打一個新 tag:

git tag -a v1.1.0 -m "發(fā)布 v1.1.0:新增訂單功能"

最終可能是這樣:

A --- B --- C --- D --- E
          ↑           ↑
        v1.0.0      v1.1.0

九、推送 Tag 到遠程倉庫

注意:本地打完 tag 后,默認只存在本地,遠程倉庫是看不到的。

你需要手動推送 tag。

推送指定 tag:

git push origin v1.0.0

推送所有本地 tag:

git push origin --tags

一般建議推送指定 tag,避免把本地一些測試 tag 也推上去:

git push origin v1.0.0

十、完整發(fā)版流程示例

假設(shè)你現(xiàn)在項目開發(fā)完成,準備發(fā)布 v1.0.0

1. 查看當前狀態(tài)

git status

如果有修改,先提交:

git add .
git commit -m "完成庫存調(diào)撥功能"

2. 確認當前分支

git branch

或者:

git status

確認你在正確的分支上,比如 main

3. 拉取最新代碼

git pull origin main

避免本地代碼落后于遠程。

4. 推送代碼

git push origin main

5. 打 tag

git tag -a v1.0.0 -m "發(fā)布 v1.0.0:完成庫存調(diào)撥功能"

6. 推送 tag

git push origin v1.0.0

這樣遠程倉庫就有了 v1.0.0 這個版本。

十一、如何切換到某個 Tag

切換到某個 tag:

git checkout v1.0.0

或者新版本 Git 推薦用:

git switch --detach v1.0.0

切換后,你會進入一個特殊狀態(tài),叫做:

detached HEAD

中文可以理解為:

游離 HEAD 狀態(tài)

這是什么意思?

意思是你現(xiàn)在不是在某個分支上,而是臨時查看 tag 對應(yīng)的代碼。

十二、什么是 detached HEAD?

當你執(zhí)行:

git checkout v1.0.0

Git 可能會提示:

You are in 'detached HEAD' state.

很多新手看到這個提示會害怕,其實不用怕。

它的意思是:

你現(xiàn)在正在查看某個固定版本,而不是在分支上繼續(xù)開發(fā)

例如:

A --- B --- C --- D --- E
          ↑           ↑
        v1.0.0      main

你切換到 v1.0.0 后,當前代碼就是 C 那個版本。

這個時候適合做這些事情:

  • 查看歷史代碼
  • 對比問題
  • 本地運行舊版本
  • 確認某個版本是否有 bug

但是不建議直接在 detached HEAD 狀態(tài)下繼續(xù)開發(fā)。

十三、從 Tag 切回主分支

如果你只是查看舊版本,看完后想回到主分支:

git checkout main

或者:

git switch main

如果你的主分支叫 master

git checkout master

或者:

git switch master

十四、如果想基于某個 Tag 修改代碼怎么辦?

不要直接在 tag 上改。

因為 tag 是固定版本,不適合直接繼續(xù)開發(fā)。

正確做法是:基于這個 tag 創(chuàng)建一個新分支。

例如你想基于 v1.0.0 修復(fù) bug:

git checkout -b fix-v1.0.0-bug v1.0.0

或者:

git switch -c fix-v1.0.0-bug v1.0.0

這行命令的意思是:

從 v1.0.0 這個版本創(chuàng)建一個新分支 fix-v1.0.0-bug

然后你就可以在這個新分支上正常修改代碼、提交代碼。

git add .
git commit -m "修復(fù) v1.0.0 版本中的庫存 bug"

如果修復(fù)完成后要發(fā)布補丁版本,可以再打一個新 tag:

git tag -a v1.0.1 -m "發(fā)布 v1.0.1:修復(fù)庫存 bug"
git push origin fix-v1.0.0-bug
git push origin v1.0.1

十五、切換 Tag 后修改了代碼怎么辦?

假設(shè)你執(zhí)行了:

git checkout v1.0.0

然后你不小心修改了代碼。

這時候先不要慌。

查看當前狀態(tài):

git status

如果你只是誤改了,不想保留:

git restore .

如果你想保留這些修改,應(yīng)該創(chuàng)建一個新分支:

git switch -c fix-from-v1.0.0

然后提交:

git add .
git commit -m "基于 v1.0.0 修復(fù)問題"

這樣你的修改就不會丟失,也不會直接影響原來的 tag。

十六、查看某個 Tag 對應(yīng)的代碼差異

查看 tag 的詳細信息:

git show v1.0.0

查看兩個 tag 之間的差異:

git diff v1.0.0 v1.1.0

查看兩個 tag 之間的提交記錄:

git log v1.0.0..v1.1.0 --oneline

這個命令很適合用來寫版本更新日志。

例如:

git log v1.0.0..v1.1.0 --oneline

輸出:

e8f9a12 修復(fù)庫存調(diào)撥 bug
a7c2d11 新增訂單導(dǎo)出功能
b6d9f21 優(yōu)化登錄頁面

十七、刪除本地 Tag

如果你本地 tag 打錯了,可以刪除。

刪除本地 tag:

git tag -d v1.0.0

注意:這只會刪除本地 tag,不會刪除遠程 tag。

十八、刪除遠程 Tag

如果 tag 已經(jīng)推送到遠程倉庫,也需要刪除遠程 tag。

刪除遠程 tag:

git push origin --delete v1.0.0

或者:

git push origin :refs/tags/v1.0.0

推薦使用第一種:

git push origin --delete v1.0.0

十九、修改已經(jīng)打好的 Tag

嚴格來說,不建議修改已經(jīng)發(fā)布的 tag。

因為 tag 一旦推送到遠程,其他人可能已經(jīng)使用了它。

如果你確實打錯了,比如 v1.0.0 指向了錯誤 commit,可以這樣處理:

1. 刪除本地錯誤 tag

git tag -d v1.0.0

2. 刪除遠程錯誤 tag

git push origin --delete v1.0.0

3. 重新打 tag

git tag -a v1.0.0 正確的commitId -m "發(fā)布 v1.0.0"

例如:

git tag -a v1.0.0 c3a7b91 -m "發(fā)布 v1.0.0"

4. 重新推送 tag

git push origin v1.0.0

但是要注意:如果這個 tag 已經(jīng)被別人拉取過,最好通知團隊成員重新同步。

二十、拉取遠程 Tag

一般執(zhí)行:

git fetch

就會拉取遠程分支信息,但不一定拉取所有 tag。

可以單獨拉取 tag:

git fetch --tags

如果你想從遠程獲取最新 tag,可以執(zhí)行:

git fetch origin --tags

查看:

git tag

二十一、根據(jù) Tag 部署代碼

很多時候,服務(wù)器上線時不是直接拉 main 最新代碼,而是拉某個穩(wěn)定 tag。

例如上線 v1.0.0

git fetch --tags
git checkout v1.0.0

如果你需要基于 tag 創(chuàng)建部署分支:

git checkout -b deploy-v1.0.0 v1.0.0

然后安裝依賴、構(gòu)建、啟動服務(wù)。

前端示例:

npm install
npm run build

后端示例:

npm install
npm run start

或者使用 Docker:

docker build -t my-app:v1.0.0 .
docker run -d --name my-app -p 3000:3000 my-app:v1.0.0

這樣 Docker 鏡像版本和 Git Tag 版本就對應(yīng)起來了。

二十二、Tag 命名規(guī)范

常見 tag 命名:

v1.0.0
v1.1.0
v2.0.0

推薦使用語義化版本號:

主版本號.次版本號.修訂號

例如:

v1.2.3

含義:

1 = 主版本號,通常表示大版本升級,可能有不兼容變化
2 = 次版本號,通常表示新增功能
3 = 修訂號,通常表示 bug 修復(fù)

示例:

修復(fù) bug:

v1.0.1

新增功能:

v1.1.0

大版本升級:

v2.0.0

也可以根據(jù)日期命名:

release-2026-05-26

不過一般項目更推薦:

v1.0.0
v1.1.0
v1.1.1

二十三、常用命令速查表

查看所有 tag

git tag

查看匹配的 tag

git tag -l "v1.*"

創(chuàng)建輕量 tag

git tag v1.0.0

創(chuàng)建附注 tag

git tag -a v1.0.0 -m "發(fā)布 v1.0.0"

給指定 commit 打 tag

git tag -a v1.0.0 commitId -m "發(fā)布 v1.0.0"

查看 tag 信息

git show v1.0.0

推送指定 tag

git push origin v1.0.0

推送所有 tag

git push origin --tags

拉取遠程 tag

git fetch --tags

切換到 tag

git checkout v1.0.0

使用 switch 切換到 tag

git switch --detach v1.0.0

從 tag 創(chuàng)建新分支

git checkout -b fix-v1.0.0 v1.0.0

或者:

git switch -c fix-v1.0.0 v1.0.0

刪除本地 tag

git tag -d v1.0.0

刪除遠程 tag

git push origin --delete v1.0.0

查看兩個 tag 之間的差異

git diff v1.0.0 v1.1.0

查看兩個 tag 之間的提交記錄

git log v1.0.0..v1.1.0 --oneline

二十四、新手常見問題

1. 打完 tag 后,我繼續(xù)修改代碼,tag 會變嗎?

不會。

Tag 會固定指向打 tag 時的 commit。后續(xù)你繼續(xù)提交代碼,只會讓分支往前走,不會影響原來的 tag。

2. 為什么我本地有 tag,遠程倉庫看不到?

因為 tag 默認不會自動推送。

需要執(zhí)行:

git push origin v1.0.0

或者:

git push origin --tags

3. 切換 tag 后提示 detached HEAD 是不是出錯了?

不是。

這是正?,F(xiàn)象。

表示你現(xiàn)在正在查看一個固定版本,而不是在某個分支上開發(fā)。

如果只是查看代碼,不用管。

如果要修改代碼,建議創(chuàng)建新分支:

git switch -c fix-from-v1.0.0

4. 可以直接在 tag 上修改代碼嗎?

不建議。

Tag 是固定版本標記,不適合直接繼續(xù)開發(fā)。

正確方式是從 tag 創(chuàng)建新分支:

git checkout -b fix-v1.0.0 v1.0.0

5. tag 打錯了怎么辦?

如果還沒推送遠程:

git tag -d v1.0.0
git tag -a v1.0.0 正確commitId -m "發(fā)布 v1.0.0"

如果已經(jīng)推送遠程:

git tag -d v1.0.0
git push origin --delete v1.0.0
git tag -a v1.0.0 正確commitId -m "發(fā)布 v1.0.0"
git push origin v1.0.0

但是如果團隊成員已經(jīng)使用過這個 tag,需要通知大家重新同步。

6. 如何知道當前代碼是不是某個 tag?

可以執(zhí)行:

git describe --tags

如果當前 commit 正好在某個 tag 上,可能輸出:

v1.0.0

如果當前 commit 在 tag 后面,可能輸出:

v1.0.0-3-gabc1234

意思是:

當前代碼基于 v1.0.0 之后又多了 3 個 commit

二十五、推薦的實際工作流

一個比較規(guī)范的發(fā)版流程如下:

# 1. 查看當前狀態(tài)
git status

# 2. 提交代碼
git add .
git commit -m "完成 xxx 功能"

# 3. 拉取遠程最新代碼
git pull origin main

# 4. 推送代碼
git push origin main

# 5. 打 tag
git tag -a v1.0.0 -m "發(fā)布 v1.0.0:完成 xxx 功能"

# 6. 推送 tag
git push origin v1.0.0

如果后續(xù)發(fā)現(xiàn) v1.0.0 有 bug,需要修復(fù):

# 1. 基于 v1.0.0 創(chuàng)建修復(fù)分支
git checkout -b fix-v1.0.0-bug v1.0.0

# 2. 修改代碼后提交
git add .
git commit -m "修復(fù) v1.0.0 中的 xxx bug"

# 3. 打補丁 tag
git tag -a v1.0.1 -m "發(fā)布 v1.0.1:修復(fù) xxx bug"

# 4. 推送修復(fù)分支
git push origin fix-v1.0.0-bug

# 5. 推送新 tag
git push origin v1.0.1

二十六、總結(jié)

Git Tag 的核心作用就是:

給某一次 commit 做版本標記

它最常用于:

  • 項目發(fā)版
  • 生產(chǎn)部署
  • 版本回滾
  • 生成發(fā)布記錄
  • Docker 鏡像版本對應(yīng)
  • 查看歷史穩(wěn)定版本

需要記住幾個重點:

1. tag 是固定的,后續(xù)修改代碼不會影響原來的 tag
2. 本地打 tag 后,需要手動 push 到遠程
3. 切換 tag 后出現(xiàn) detached HEAD 是正常的
4. 不建議直接在 tag 上開發(fā)
5. 如果要基于 tag 修改代碼,應(yīng)該從 tag 創(chuàng)建新分支
6. 正式發(fā)版推薦使用附注 tag:git tag -a

最常用的幾個命令:

# 打 tag
git tag -a v1.0.0 -m "發(fā)布 v1.0.0"

# 推送 tag
git push origin v1.0.0

# 查看 tag
git tag

# 切換 tag
git checkout v1.0.0

# 從 tag 創(chuàng)建分支
git checkout -b fix-v1.0.0 v1.0.0

# 刪除本地 tag
git tag -d v1.0.0

# 刪除遠程 tag
git push origin --delete v1.0.0

以上就是Git Tag打、切換、推送和刪除的操作指南的詳細內(nèi)容,更多關(guān)于Git Tag打、切換、推送和刪除的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 怎樣刪除Git中緩存的用戶名和密碼

    怎樣刪除Git中緩存的用戶名和密碼

    這篇文章主要介紹了怎樣刪除Git中緩存的用戶名和密碼問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Git向倉庫提交代碼三步走詳解(add、commit、push)

    Git向倉庫提交代碼三步走詳解(add、commit、push)

    文章主要介紹了Git的工作區(qū)、暫存區(qū)和版本庫的概念,并詳細講述了如何使用`git add`、`git commit`和`git push`命令進行代碼版本管理,此外,還介紹了如何配置用戶名和郵箱地址、創(chuàng)建版本庫、記錄快照、上傳代碼到遠程倉庫以及強制推送等操作
    2026-04-04
  • git流水線(Pipeline)導(dǎo)致分支(Branch)無法合并問題及解決

    git流水線(Pipeline)導(dǎo)致分支(Branch)無法合并問題及解決

    這篇文章主要介紹了git流水線(Pipeline)導(dǎo)致分支(Branch)無法合并問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • postman測試接口各種類型傳值的實現(xiàn)

    postman測試接口各種類型傳值的實現(xiàn)

    本文主要介紹了postman測試接口各種類型傳值的實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Git可視化教程之Git Gui的使用

    Git可視化教程之Git Gui的使用

    這篇文章主要介紹了Git可視化教程之Git Gui的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • idea中的project、module、artifact的具體使用

    idea中的project、module、artifact的具體使用

    本文主要介紹了idea中的project、module、artifact的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Git 教程之遠程倉庫詳解

    Git 教程之遠程倉庫詳解

    本文主要介紹Git 遠程倉庫的知識,這里整理了相關(guān)資料,及命令詳解,圖文并茂的介紹該部分內(nèi)容,有需要的小伙伴可以參考下
    2016-09-09
  • phpMyAdmin“無法載入 mysql 擴展, 請檢查 PHP 配置”問題的解決方案

    phpMyAdmin“無法載入 mysql 擴展, 請檢查 PHP 配置”問題的解決方案

    安裝XAMPP后,phpMyAdmin無法進入,一直提示“無法載入 mysql 擴展, 請檢查 PHP 配置”。網(wǎng)上查,需要修改php.ini,卻發(fā)現(xiàn)本來就是正確的;
    2009-02-02
  • vscode入門教程之頁面啟動與代碼調(diào)試

    vscode入門教程之頁面啟動與代碼調(diào)試

    VScode是微軟推出的一款輕量級的編輯器,采用了和VS相同的UI界面。今天小編給大家?guī)硪黄绾问褂胿scode來進行最基本的工作的小教程,希望大家能夠喜歡
    2020-01-01
  • 詳解scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法

    詳解scratch3.0二次開發(fā)之scratch-blocks中的blocks的類型、定義和使用方法

    scratch-blocks是scratch-gui依賴的一個基本模塊,blocks的作用是通過拖曳的方法組成blocks堆塊,今天通過本文給大家分享scratch3.0二次開發(fā)之scratch-blocks的免編譯修改方法,感興趣的朋友一起看看吧
    2021-08-08

最新評論

漳浦县| 翁源县| 乐平市| 腾冲县| 红河县| 四平市| 靖远县| 华亭县| 富源县| 类乌齐县| 长沙县| 博罗县| 车致| 东丽区| 喀喇| 岑溪市| 东乡| 新闻| 奎屯市| 保定市| 浮山县| 保德县| 盐山县| 石屏县| 都匀市| 秭归县| 乌苏市| 汉川市| 洛川县| 高密市| 仲巴县| 佳木斯市| 八宿县| 杭州市| 和田县| 巴里| 陆良县| 五家渠市| 宜丰县| 腾冲县| 博湖县|