远程分支信息查看

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/devmaster       merges with remote masterLocal 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, usegit 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 <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>

注意:如果使用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
本文转自帅气的头头博客51CTO博客,原文链接http://blog.51cto.com/12902932/1927040如需转载请自行联系原作者
sshpp

Git 远程分支的pull与push相关推荐

  1. git 远程分支和tag标签的操作

    git远程分支操作: 1.创建远程分支 git push --set-upstream origin develop:develop2 在服务器创建远程分支devlop2,让本地的develop分支和 ...

  2. linux下git分支管理,git远程分支管理

    git远程分支管理 使用分支的原则 master分支是非常重要的,线上发布代码用这个分支,平时我们开发代码不要在这个分支上 创建一个dev分支,专门用作开发,只有当发布到线上之前,才会把dev分支合并 ...

  3. 更改git远程分支的方法

    更改git远程分支的方法 Pull失败的解决方法:

  4. Git远程分支管理(四)

    本系列为个人学习Git参照廖雪峰老师的笔记 本文内容:Git远程分支管理 参考笔记: https://www.liaoxuefeng.com/wiki/896043488029600 文章目录 3 G ...

  5. git 远程分支创建与推送

    原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html 本地分支的创建 本地分支的来源为执行git che ...

  6. Git 不能只会 pull 和 push,试试这5条提高效率的命令吧!

    点击关注公众号,实用技术文章及时了解 来源:juejin.cn/post/7071780876501123085 前言 使用 Git 作为代码版本管理,早已是现在开发工程师必备的技能.可大多数工程师还 ...

  7. 如何删除git远程分支

    1,在开发过程中,大家在远程创建了许多分支,有些是无用的,该如何删除呢,可以参考下面的方法. 如果不再需要某个远程分支了,比如搞定了某个特性并把它合并进了远程的 master 分支(或任何其他存放  ...

  8. Git远程分支的回退

    下午发现上午提交的一个版本有问题,在回退本地分支后,发现还必须要回退远程分支的版本.网上查找到的资料如下: #新建old_master分支做备份 git branch old_master #push ...

  9. git远程分支修改名字

    本地分支重命名(还没有推送到远程) git branch -m oldName newName 远程分支重命名 重命名远程分支对应的本地分支 git branch -m oldName newName ...

最新文章

  1. 服务器返回数据为空,iOS 处理服务器返回数据中的null
  2. 反射中getMethods 与 getDeclaredMethods 的区别
  3. 解决“Maven项目中的Dynamic Web Module 3.0 requires Java 1.6 or newer”问题
  4. 83998 连接服务器出错_服务端 TCP 连接的 TIME_WAIT 问题分析与解决
  5. [Be a Coding Plasterer] Components 1:get Basic Things
  6. dot-files/directories 点开头的文件或文件夹(windows/linux)
  7. 三维重建笔记_多视几何_求基本矩阵F_六/七/八点法_误差评估
  8. 毕业设计之 ---- 基于大数据挖掘分析的大众点评评论文本挖掘
  9. OpenCV-python显示图片时图片比窗口大的解决办法
  10. excel取末尾数字_excel表格中数字末尾的0不显示怎么设置
  11. 网站首页的轮播新闻flash效果实现
  12. LeetCode力扣刷题——巧解数学问题
  13. 服务器您的网络已被劫持请立即修复,网页被劫持并跳转到发布网络的修复方法...
  14. 假设一个类,继承了父类并且实现了一个接口,然后父类和接口有一个同名的方法,那么此时会发生什么情况,编译会提示出错吗?如果不出错,那么这到底算是重写还是实现接口方法?
  15. FTP服务器选择经历和踩坑记,wu-ftp, proftpd 和 vsftpd
  16. 大数据工具Maxwell的使用
  17. java系统学习_java全面系统学习路线(转载)
  18. 用Java实现一个抽奖系统(附完整代码)
  19. 简单的LaTeX数学表达式教程
  20. PTGui Pro 12(全景图合成软件)官方中文版V12.0 | PTGui汉化版下载 | PTGUi官网下载

热门文章

  1. matlab反馈模型,—倒立摆状态反馈系统的建模及matlab仿真.docx
  2. FPGA之道(77)静态时序分析(三)同步时序逻辑的分析原理
  3. 【FPGA】SRIO IP核的三层协议的作用?
  4. 应用PlanAhead进行I/O规划
  5. mpVue配置sass全局变量
  6. 网络传输模型(概念)
  7. All About Monads
  8. extern C __declspec(dllexport) __declspec(dllimport) 和 def
  9. GitHub使用指南!(ubuntu)
  10. C socket编程