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 分支定义为空值,也就是删除它。
最新文章
- SuperMap-iServer-单点登录功能验证(CAS)
- logstash服务启动脚本
- 标准io与文件io
- JAVA addShutdownHook测试
- 使用Apache的.htaccess就可以防盗链
- Silverlight 上传文件源代码
- 滑动菜单栏(一)开源项目SlidingMenu的使用
- C 的 coroutine 库 via 云风的 BLOG
- hdoj (1162) 最小生成树
- TSQL Beginners Challenge 3 - Find the Factorial
- python基本运算
- C语言中函数可变参数解析
- Python系列之 - python循环语句
- Voronoi图和Delaunay三角剖分
- 总结:极光推送java服务端(1)
- django AnonymousUser
- XMind 入门教程
- 改装原生的dialog
- 简易Java文本编译器(C++)
- 机器学习初入门01-numpy的基础用法
热门文章
- RabbitMQ Performance Testing Tool 性能测试工具
- numpy, pandas, scikit-learn cheat sheet (速查表)
- 183.Wood Cut【hard】
- discuz添加管理员,找回管理员方法
- vue 组件1
- UIWebView加上safari风格前进后退按钮(转)
- iOS开发常见错误(转)
- library not found for -lPods-AFNetworking解决放案
- active mq 配置
- MySQL 5.7以上 root用户默认密码问题