git 如何同步本地tag與遠程tag


問題場景:
同事A在本地創建tagA並push同步到了遠程->同事B在本地拉取了遠程tagA(git fetch)->同事A工作需要將遠程標簽tagA刪除->同事B用git fetch同步遠端信息,git tag后發現本地仍然記錄有tagA

分析:對於遠程repository中已經刪除了的tag,即使使用git fetch --prune,甚至"git fetch --tags"確保下載所有tags,也不會讓其在本地也將其刪除的。而且,似乎git目前也沒有提供一個直接的命令和參數選項可以刪除本地的在遠程已經不存在的tag(我目前是沒找到有關這類tag問題的git命令~~,有知道的同學可以告知我下,互相進步)。
解決方法:

git tag -l | xargs git tag -d #刪除所有本地分支
git fetch origin --prune #從遠程拉取所有信息

#查詢遠程tags的命令如下:
git ls-remote --tags origin

tag常用git命令:
git tag #列出所有tag
git tag -l v1.* #列出符合條件的tag(篩選作用)
git tag [tag名] #創建輕量tag(無-m標注信息)
git tag -a [tag名] #創建含注解的tag

git push origin --tags #推送所有本地tag到遠程
git push origin [本地tag名] #推送指定本地tag到遠程

git tag -d [本地tag名] #刪除本地指定tag
git push origin :refs/tags/[遠程tag名] #刪除遠程指定tag

git fetch origin [遠程tag名] #拉取遠程指定tag
git show [tag名] #顯示指定tag詳細信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM