git 如何同步本地、远程的分支和tag信息

git 如何在本地同步远程分支和tag

1.git如何同步本地分支与远程origin的分支
问题场景1:
同事A创建了本地分支branchA并push到了远程->同事B在本地拉取(git fetch)了和远程branchA同步的本地分支branchA->同事A开发完成将远程分支branchA删除(远程仓库已经不存在分支branchA)->同事B用git fetch同步远端分支,git branch -r发现本地仍然记录有branchA的远程分支

分析:远端有新增分支,git fetch可以同步到新的分支到本地,但是远端有删除分支,直接"git fetch"是不能将远程已经不存在的branch等在本地删除的

解决方法:
git fetch --prune #这样就可以实现在本地删除远程已经不存在的分支
或者简略:
git fetch -p
git fetch -p origin
git remote prune origin

branch常用的命令:
git branch -a #查看本地和远程所有的分支
git branch -r #查看所有远程分支
git branch #查看所有本地分支
git branch -d -r origin/branchA #删除远程分支

其他较常用的命令
git fetch #将本地分支与远程保持同步
git checkout -b 本地分支名x origin/远程分支名x #拉取远程分支并同时创建对应的本地分支

问题场景2:
本地分支提示:Git Your branch is ahead of ‘origin/master’ by X commits,你想让本地直接和远程保持同步,想让不再提示这个讨厌信息,那么如果你本地的commit确保不想要,可以如下操作:
解决方法:
1)git reset --hard origin/master

或者还有一个将本地代码与服务器代码更新一致的语句
2)git branch -u origin/master

如果想直接回退版本让远程和本地代码保持一致,那就确保本地代码没问题之后强制推到远程
git push -f origin master

2.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(无-m标注信息)
git tag -a -m ‘first version’ #创建含标注tag
git tag -a f1bb97a(commit id) #为之前提交打tag

git push origin --tags #推送所有本地tag到远程
git push origin #推送指定本地tag到远程

git tag -d #删除本地指定tag
git push origin :refs/tags/ #删除远程指定tag

git fetch origin #拉取远程指定tag
git show #显示指定tag详细信息

参考阅读
http://smilejay.com/2013/04/git-sync-tag-and-branch-with-remote/
https://blog.zengrong.net/post/1746.html

  • 12
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
同步本地tag远程tag,可以按照以下步骤进行操作。首先,同事A在本地创建tagA并将其推送到远程仓库。然后,同事B可以通过使用git fetch命令从远程仓库拉取tagA到本地。接下来,如果同事A需要删除远程标签tagA,可以使用git push命令将删除操作推送到远程仓库。最后,同事B可以使用git fetch命令同步远程信息,并使用git tag命令检查本地是否仍然记录有tagA。如果本地仍然记录有tagA,可以使用以下命令强制同步本地与远程tag: ``` git tag -l | xargs git tag -d # 删除所有本地tag git fetch origin --prune # 从远程拉取所有信息 ``` 这样就可以强制同步本地与远程tag了。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [git 如何同步本地、远程分支tag信息](https://blog.csdn.net/wei371522/article/details/83186077)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [【GitGit tag无法同步的解决方案](https://blog.csdn.net/plaxbsga/article/details/125328774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值