Git 远程分支的pull与push
Git 远程分支的pull与push
远程分支信息查看
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为upstream
git config --global push.default upstream
#or
git 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
参考
Git 远程分支的pull与push的更多相关文章
- git 远程分支创建与推送
git 远程分支创建与推送 原文地址:http://hi.baidu.com/lingzhixu/blog/item/4a9b830bb08a329fe850cd5b.html 本地分支的创建 本 ...
- git 远程分支回滚
git代码库回滚: 指的是将代码库某分支退回到以前的某个commit id [本地代码库回滚]: git reset --hard commit-id :回滚到commit-id,讲commit-id ...
- git远程分支创建,本地分支关联远程分支,第一次发布、更新分支
git远程分支创建,本地分支关联远程分支,第一次发布.更新分支 github托管服务器地址为https://github.com git提交更新代码示意图: 本地与远程进行免密码配置(本地与远程关联) ...
- git 远程分支和tag标签的操作
git远程分支操作:1.创建远程分支git push --set-upstream origin develop:develop2在服务器创建远程分支devlop2,让本地的develop分支和dev ...
- git远程分支--remote
查看所有远程引用: $ git ls-remote From ssh://someone@example/testgit ebf3ef7551603cd57a699e80db0bfab36d1aa7b ...
- git - 远程分支
对于用户来说,git给人提交到本地的机会.我们可以在自己的机器上创建不同的branch,来测试和存放不同的代码. 对于代码管理员而言,git有许多优良的特性.管理着不同的分支,同一套源代码可以出不一样 ...
- 关于git远程分支操作
对于用户来说,git给人提交到本地的机会.我们可以在自己的机器上创建不同的branch,来测试和存放不同的代码. 对于代码管理员而言,git有许多优良的特性.管理着不同的分支,同一套源代码可以出不一样 ...
- Git远程分支和refs文件具体解释
推送远程分支到同一个server 比方首先建立gitserver,顺便clone出两个副本 mkdir server cd server git init --bare cd .. git clone ...
- Git 远程分支常用操作
# 查看远程仓库推拉地址,分支信息,分支跟踪情况等 git remote show origin # 拉取远程仓库的变更内容到本地 git fetch origin # 拉取并合并仓库的变更内容到本地 ...
随机推荐
- java中浅层克隆和深层克隆
1.浅复制与深复制概念 浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象 ...
- 读书笔记 effective c++ Item 17 使用单独语句将new出来的对象放入智能指针
1. 可能会出现资源泄漏的一种用法 假设我们有一个获取进程优先权的函数,还有一个在动态分类的Widget对象上根据进程优先权进行一些操作的函数: int priority(); void proces ...
- Jquery动态增加行和删除行
$("#add_5").click(function(){ var str_1="<tr> <td><input type=\"t ...
- WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。
Web 要访问来自 Web 的文件,你可以使用标准的绝对 HTTP URI: <img src="http://www.contoso.com/images/logo.png" ...
- 每天一个linux命令(33)--df命令
周末是学习的好时光. 每天一个Linux命令,接下来是磁盘存储相关的,df, du命令 Linux中 df 命令的功能是用来检查Linux 服务器的文件系统的磁盘空间占用情况.可以利用该命令来获取硬 ...
- Cocos2dx热更新遇到的那些坑
1.Cocos2dx热更新因为文件名含有空格,ios下载失败bug修改 问题描述: 项目中偶尔遇到美术图片命名时不规范,导致图片名字含有空格.导致ios热更新时,遇到下载失败. 解决方案: 1.从新改 ...
- 同一环境下新建Standby RAC库
需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组. 说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大.我这里是用作读写分离. ...
- JS中的onclick事件
原文链接:https://segmentfault.com/q/1010000007955542?_ea=1503986 我自己做了一下测试. 这个是在html里面直接绑定onclick事件,我打印了 ...
- JS排序算法
1.冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们. 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就是最大项了,所以第二次需要交换 ...
- C#实现分页组件
分页无论是前端和后端,基本都有广泛应用!下面通过一个小小案例完成这个分页效果: 参数含义:string urlFormat: 要传给服务器端的URL地址格式,方便在点超链接时进行相应的跳转 long ...