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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wei371522/article/details/83186077

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

展开阅读全文

没有更多推荐了,返回首页