设为首页 收藏本站
查看: 682|回复: 0

[经验分享] Git 远程分支的pull与push

[复制链接]

尚未签到

发表于 2018-9-17 06:52:30 | 显示全部楼层 |阅读模式
远程分支信息查看
git branch -r #查看远程分支git branch -a #查看所有分支,本地和远程git remote show [remote-name] #查看远程仓库信息  其中git remote show [remote-name]展示的信息包括:

  •   会列出远程仓库的 URL 与跟踪分支的信息
  •   列出了当你在特定的分支上执行 git push 会自动地推送到哪一个远程分支
  •   列出了哪些远程分支不在你的本地
  •   哪些远程分支已经从服务器上移除了
  •   执行 git pull 时哪些分支会自动合并
  •   ……
检出远程非master分支到本地
git checkout -b local origin/daily/dev  上面的方法可以直接检出远程分支到本地,在本地新建local分支,并切换到local分支上,注意本地分支和远程分支不同名。
  这个方法会自动创建远程分支 /daily/dev 和本地分支local的跟踪关系, 通过git remote show origin可以看到包含如下信息:
Local branches configured for 'git pull':  
     local merges with remote /daily/dev
  
     master       merges with remote master
  
  Local ref configured for 'git push':
  
    master pushes to master (up to date)
  其中Local branches configured for 'git pull':下的就是upstream跟踪分支。
  可以看出,远程分支 /daily/dev 和本地分支local 建立了git pull的关系,但是没有建立git push的关系。此时如果强行push,不会成功,会出现如下提示:
fatal: The current branch new has no upstream branch.  
To push the current branch and set the remote as upstream, use
  
    git push --set-upstream origin develop
Git默认push设置
  我们知道通过git clone git@gitlab.xxx.com:xxxxx.git可以建立默认的本地master分支和远程master分支的pull和push的关系,但是我们无法通过clone命令检出非master分支,那么对于非master分支怎么办呢?
  Git中push.default可以指定在没有明确指定远程分支的情况下,默认push的远程分支,其取值可以是:

  •   nothing - push操作无效,除非显式指定远程分支(想让push变得简单的就不要用这个)
  •   current - push当前分支到远程同名分支,如果远程同名分支不存在则自动创建同名分支(central 和 non-central workflows都适用)
  •   upstream - push当前分支到它的upstream分支上(通常用于central workflow)
  •   simple - simple和upstream是相似的(通常用于central workflow),只有一点不同,simple必须保证本地分支和它的远程 upstream分支同名,否则会拒绝push操作
  •   matching - push所有本地和远程两端都存在的同名分支
  central / non-central workflows 是Git的两种常见工作流场景:

  •   central workflows - 集中式工作流,一个分支的push和pull都是同一个远程仓库
  •   non-central workflows - 非集中式工作流,一个分支的push和pull可能分别都有不同的远程仓库
  在Git 2.0之前,push.default的内建值被设为'matching',2.0之后则被更改为了'simple'。
  在了解push.default之后,我们有如下几种比较好的从远程分支检出本地分支的方法(基于V2.0+):
解法一
  所以如果你只有一个远程仓库,且你想检出的分支名称和远程分支不同名(有些管理工具会自动生成比较丑的远程分支名,类似:/features/2017-03-31-featuresA-1),那么你可以通过设置push.default 默认推送到pull的远程分支(upstream 分支):
#检出重命名git checkout -b dev origin/features/2017-03-31-featuresA-1#设置push.default为upstreamgit config --global push.default upstream#orgit config push.default upstream#取消设置git config --unset push.default解法二
  如果不想通过修改upstream,那么只能通过设置检出本地分支名称和远程分支名称相同:
git checkout -b  /  注意:如果使用git checkout -b features/feature_1 origin/features/feature_1检出,那么远程分支名称是features/feature_1,而不是origin/features/feature_1。
解法三
  这个也不算什么解法,但是强烈推荐,就是建立远程分支的时候,取个好点的名字。
git clone git@gitlab.xxx.com:xxxxx.git#从master建立新分支git checkout -b dev#push并建立同名远程分支git push origin dev


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-587990-1-1.html 上篇帖子: GIt的备份和恢复 下篇帖子: Git克隆Github或Gitlab上非Master分支代码的方法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表