当前位置: 首页 > news >正文

Git之本地分支和远程分支建立追踪关系的几种方式

如果本地的分支没有和远程的分支进行关联,在git pull/fetch的时候,会抛出大致如下的错误信息:

There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

git branch --set-upstream-to=origin/<branch> release

因为当前分支没有追踪远程指定的分支的话,当前分支指定的版本快照不知道要作为服务器哪一个分支的版本快照的子节点。简单来说就是:不知道要推送给哪一个分支。建立本地分支与远程分支的映射关系(或者为跟踪关系track)。这样使用git pull或者git push时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。
那么如何建立远程分支,下面介绍方法:

使用git branch --help查看使用帮助

NAME
       git-branch - List, create, or delete branches

SYNOPSIS
       git branch [--color[=<when>] | --no-color] [--show-current]
               [-v [--abbrev=<n> | --no-abbrev]]
               [--column[=<options>] | --no-column] [--sort=<key>]
               [--merged [<commit>]] [--no-merged [<commit>]]
               [--contains [<commit>]] [--no-contains [<commit>]]
               [--points-at <object>] [--format=<format>]
               [(-r | --remotes) | (-a | --all)]
               [--list] [<pattern>...]
       git branch [--track | --no-track] [-f] <branchname> [<start-point>]
       git branch (--set-upstream-to=<upstream> | -u <upstream>) [<branchname>]
       git branch --unset-upstream [<branchname>]
       git branch (-m | -M) [<oldbranch>] <newbranch>
       git branch (-c | -C) [<oldbranch>] <newbranch>
       git branch (-d | -D) [-r] <branchname>...
       git branch --edit-description [<branchname>]

查看本地分支与远程分支的映射关系

git branch -vv

upstream的设置

基本设置

执行如下命令即可将远程分支与本地分支关联

git branch --set-upstream-to=origin/remote_branch your_branch
origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

把当前分支的upstream为origin远程仓库的dev分支

git branch --set-upstream-to=origin/dev dev
or
git branch -u origin/dev dev
如果当前就在 dev 分支上, 还可以省略 dev:
git branch --set-upstream-to=origin/dev 
or
git branch -u origin/dev

在推送的同时,同时设置upstream

git push -u origin master

推送master分支到远程origin仓库master分支,并且建立本地分支master的upstream为origin/master

不切换分支直接设置其他分支的upstream

git branch -u origin/br01-remote br01

设置本地分支br01的upstream为origin/br01-remote

或push的时候直接设置

git push -u origin br03:br03

本地没有分支,远程有分支

如果远程新建了一个分支,本地没有该分支,可以用git checkout --track origin/branch_name,这时候本地会新建一个分支名叫branch_name,会自动跟踪远程的同名分支branch_name

git checkout --track origin/dev // 在本地创建一个dev分支并跟踪一个同名的远程分支

用上面中方法,得到的分支名永远和远程的分支名一样,如果想新建一个本地分支不同名字,同时跟踪一个远程分支可以利用。
git checkout -b new_branch_name branch_name,这条指令本来是根据一个branch_name分支分出一个本地分支new_branch_name,但是如果所根据的分支branch_name是一个远程分支名,即git checkout -b new_branch_name origin/branch_name那么本地的分支会自动的track远程分支。建议跟踪分支和被跟踪远程分支同名。

撤销本地分支与远程分支的映射关系

# 取消当前分支的upstream
git branch --unset-upstream

# 取消其他分支的upstream
git branch --unset-upstream [分支名]


 

相关文章:

  • vue 中 父子组件值交互怎么使用 this.$emit
  • Codeforces 1009F 长链剖分优化dp做法
  • 还记得这首是什么歌吗?
  • 【C#教程16/16】: 输入输出
  • 银行 IT 架构到底要不要云化?
  • 柔性电子数字源表测试方案
  • 统计学考研笔记:回归方程计算题
  • 嵌入式基础_STM32F103C8T6从零开始建立一个项目(库函数)
  • Node.js | 基础完结、综合训练 —— 路由应用实战教程
  • 生命在于学习——代码审计基础
  • 【第十四篇】- Maven 自动化构建
  • c++中如何利用VA_LIST 和单体模式,构建自己的log小系统
  • 【Django】开发日报_4_Day:手机号码管理系统(1)
  • Oracle中含替换变量的查询(二)
  • 论文解读:Sadeepcry:使用自我注意和自动编码器网络的蛋白质结晶倾向预测的深度学习框架
  • (ckeditor+ckfinder用法)Jquery,js获取ckeditor值
  • Android单元测试 - 几个重要问题
  • css系列之关于字体的事
  • HTTP那些事
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • orm2 中文文档 3.1 模型属性
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • 前端自动化解决方案
  • 消息队列系列二(IOT中消息队列的应用)
  • 运行时添加log4j2的appender
  • ​2021半年盘点,不想你错过的重磅新书
  • ​ArcGIS Pro 如何批量删除字段
  • #、%和$符号在OGNL表达式中经常出现
  • #{}和${}的区别?
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (07)Hive——窗口函数详解
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (办公)springboot配置aop处理请求.
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)关于pipe()的详细解析
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • .NET Framework杂记
  • .NET 发展历程
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET上SQLite的连接
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • []error LNK2001: unresolved external symbol _m
  • [04]Web前端进阶—JS伪数组
  • [20190416]完善shared latch测试脚本2.txt
  • [ACM] hdu 1201 18岁生日
  • [acm算法学习] 后缀数组SA
  • [BROADCASTING]tensor的扩散机制