zoukankan      html  css  js  c++  java
  • git原理:引用规格

    引用规格(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 分支定义为空值,也就是删除它。

  • 相关阅读:
    2020_java面试
    Centos7.2 安装docker、mysql和redis
    【源码讲解】Spring事务是如何应用到你的业务场景中的?
    奇葩说今晚聊前任|扒一扒你的前任企业邮箱
    一封一封邮件发送太累?个人邮箱快速群发解决烦恼
    企业邮箱客户端收发服务器如何设置?
    163VIP邮箱怎么设置邮件签名?如何群发邮件?
    企业版邮箱哪个适合学校邮箱?企业邮箱托管服务
    企业版邮箱购买哪个?公司邮箱如何申请?
    公司邮箱登录入口是?公司邮箱申请入口在?
  • 原文地址:https://www.cnblogs.com/413xiaol/p/7834578.html
Copyright © 2011-2022 走看看