引用规格(refspec):就是在 .git/config 里面那个配置远程仓库的东西

[remote "origin"]
url = https://github.com/test/demo
fetch = +refs/heads/*:refs/remotes/origin/*

格式:由一个可选的 + 号和<src>:<dst>组成
  +:即使在不能快进的情况下也强制更新引用
  <src>:代表远程版本库中的引用
  <dst>:远程引用在本地所对应的位置

引用规格由git remote add命令自动生成,git获取服务器中refs/heads/下面的所有引用,并将他们写入本地的refs/remotes/origin中,所以,如果服务器上有一个master分支,在本地这三种写法是等价的:
  git log origin/master
  git log remotes/origin/master
  git log refs/remotes/origin/master
他们都会被扩展成 refs/remotes/origin/master

每次只拉取master分支,而不是所有分支,修改文件为:
  fetch = +refs/heads/master:refs/remotes/origin/master

将远程master分支拉取到本地的origin/mymaster分支:
  git fetch origin msater:refs/remotes/origin/mymaster

在配置文件中指定多个用于获取操作的引用规格,比如:
  [remote "origin"]
  url = https://github.com/test/demo
  fetch = +refs/heads/master:refs/remotes/origin/master
  fetch = +refs/heads/experiment:refs/remotes/origin/experiment
这样,每次拉取的时候都会拉取到master和experiment两个分支

模式不支持部分通配符,所以像下面这样的引用规格是不合法的:
  fetch = +refs/heads/qa*:refs/remotes/origin/qa*
可以通过子目录的方式来达到类似目的:
   假设QA 团队推送了一系列分支,只想拉取master和QA的分支,其他的不关心:
  [remote "origin"]
  url = https://github.com/test/demo
  fetch = +refs/heads/master:refs/remotes/origin/master
  fetch = +refs/heads/qa/*:refs/remotes/origin/qa/*

推送:
  命令行:git push origin master:refs/heads/qa/master
  配置文件:push = refs/heads/master:refs/heads/qa/master

删除:
  $ git push origin :topic
  因为引用规格的格式是 <src>:<dst>,所以把 <src> 留空,意味着把远程版本库的 topic 分支定义为空值,也就是删除它。

git原理:引用规格的更多相关文章

  1. Git 内部原理 - (5)引用规格 (6) 传输协议

    引用规格 纵观全书,我们已经使用过一些诸如远程分支到本地引用的简单映射方式,但这种映射可以更复杂. 假设你添加了这样一个远程版本库: $ git remote add origin https://g ...

  2. Git提交引用和引用日志

    转载自:https://github.com/geeeeeeeeek/git-recipes/wiki/5.5-Git%E6%8F%90%E4%BA%A4%E5%BC%95%E7%94%A8%E5%9 ...

  3. Git原理与命令大全

    Git (wiki: en  chs )是一个免费开源的分布式版本控制系统,由linux内核作者linus Torvalds开发,大型开源项目linux kernel.Android.chromium ...

  4. git原理学习记录:从基本指令到背后原理,实现一个简单的git

    一开始我还担心 git 的原理会不会很难懂,但在阅读了官方文档后我发现其实并不难懂,似乎可以动手实现一个简单的 git,于是就有了下面这篇学习记录. 本文的叙述思路参照了官方文档Book的原理介绍部分 ...

  5. Git原理及常用操作命令总结

    git原理介绍及操作 git 原理——

  6. Git原理入门简析

    为了获得更好的阅读体验,建议访问原地址:传送门 前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的 ...

  7. Git原理入门解析

    前言: 之前听过公司大佬分享过 Git 原理之后就想来自己总结一下,最近一忙起来就拖得久了,本来想塞更多的干货,但是不喜欢拖太久,所以先出一版足够入门的: 一.Git 简介 Git 是当前流行的分布式 ...

  8. git原理及如何选择分支模式

    一.git 原理介绍 1.git的四个工作区域 Git有四个工作区域:工作目录(Working Directory).暂存区(Stage/Index).资源库(Repository或Git Direc ...

  9. Git原理学习记录

    Git原理学习记录 1.git init git-test ​ git init 实际上就是在特定的目录下创建对应的目录和文件 2.object $ echo "V1" > ...

随机推荐

  1. svn your working copy appears to be locked run cleanup to amend the situation

    cleanup  则解决

  2. 千万级大数据的Mysql数据库SQL语句优化

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索 ...

  3. chrome 浏览器 的一些控制台技巧

    1.查找dom元素.但它并不支持jquery语法. $$("#fock");   // 目前仅仅知道可以查找Dom元素 2.查找dom元素绑定的事件. getEventListen ...

  4. nefu 118 n!后面有多少个0 算数基本定理,素数分解

    n!后面有多少个0 Time Limit 1000ms Memory Limit 65536K description 从输入中读取一个数n,求出n! 中末尾0的个数. input 输入有若干行.第一 ...

  5. tcpdump http://www.cnblogs.com/daisin/articles/5512957.html

    http://www.cnblogs.com/daisin/articles/5512957.html

  6. python第三周文件处理和函数-----下

    #默认参数的值是在一开始定义的时候就传给了函数, # 在后来的修改中不会被修改. #默认参数的值必须放到位置形参参数的最后面 #默认参数使用的场景是一个参数不经常变得场景,所以参数一般是不可变类型.字 ...

  7. grails 获取domainClassName

    domian截图:

  8. SVN如何新建用户并分配权限

    打开SVN服务端,找到特定的项目目录,单击右键,然后点击属性:   在弹出的页面中,点击增加:   在增加的页面中,你可以选择之前已经创建的用户,也可以重新创建用户名和密码:   如果是选择已经有的用 ...

  9. Spring MVC集成Log4j

    以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...

  10. jsp中的http status 500错误问题怎么解决

    HTTP 500 - 内部服务器错误如果有其他错误提示,需根据其提示进行修改.如果没有其他错误提示,则可以重启tomcat服务器解决.HTTP错误代码介绍: HTTP 400 - 请求无效HTTP 4 ...