引用规格(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. udpsocket 通信C#例子

    服务端代码: using System; using System.Collections.Generic; using System.Linq; using System.Net; using Sy ...

  2. 安装SDK后打开安卓project后有例如以下错误:发现了以元素 &#39;d:skin&#39; 开头的无效内容。此处不应含有子元素。

    Error: Error parsing D:\Program Files\SDK\android-sdk-windows\system-images\android-22\android-wear\ ...

  3. C#中ArrayList类的使用

    ArrayList类 使用大小可按须要动态添加的数组实现IList接口 命名空间:System.Collections 程序集:mscorlib 语法: public class ArrayList: ...

  4. asp.net mvc 重定向

    protected override void OnActionExecuting(ActionExecutingContext filterContext) { if (Request.Cookie ...

  5. .htaccess中的apache rewrite规则写法详解(未完)

    转:http://www.cnblogs.com/adforce/archive/2012/11/23/2784664.html http://blog.csdn.net/Long_Xiao_Yun/ ...

  6. unity UGUI text font size对性能影响较大

    Font Size对ugui text的性能影响非常大. <Cube Duck Run>在itouch5上测试是很流畅的,但是在iphone5上测试,在game over后显示历史最高分时 ...

  7. 【转】jQuery.extend 函数详解

    原文地址:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html JQuery的extend扩展方法:      Jq ...

  8. Swift 开源 Linux Ubuntu Install

    Swift 开源了,它现在变成跨平台的了,开源后的 Swift 不止能运行在 MAC 和 iOS 平台,现在也可以运行在 Linux 平台了.swift.org 网站上面提供了在 Linux 上面安装 ...

  9. liunx系统安装composer与配置

    1.下载composer curl -sS https://getcomposer.org/installer | php 2.我把它放在系统的PATH目录中,这样就能在全局访问它. mv compo ...

  10. JavaScript 代码块

    JavaScript 语句通过代码块的形式进行组合. 块由左花括号开始,由右花括号结束. 块的作用是使语句序列一起执行. JavaScript 函数是将语句组合在块中的典型例子. 下面的例子将运行可操 ...