git知识总结-1.git基础之git reference
1.前言
Git版本管理的内容,是一系列由40bytes SHA-1字符串所代表patch,而Git References,则是对这些字符串的引用(也可以理解为别名)。为什么需要别名呢?因为这些字符串太难记了!根据使用场景的不同,Git References分为四类:
2.git references
2.1 指向最后一次提交的reference(分支名)
这类reference以“refs/heads/”为前缀,例如“refs/heads/master”,实际就是git分支,git分支指向某一个commit。正因为此,各种分支名的全称应该是(省略refs字段):
heads/master
heads/bX
heads/bY
不过由于Git默认分支类reference的前缀是“refs/heads/”,因此平时操作分支的时候,可以把“heads”省去。
2.2 指向当前分支的reference(HEAD 标记)
这个reference比较特别,它没有指向某一个SHA-1字符串,而是指向当前正在工作的分支名,如指向refs/heads/master
因此,HEAD标记就是当前分支的标记,具体可以参考2.1小节的介绍。
2.3 指向某一个tag的reference
这类reference以“refs/tags/”为前缀,指向git仓库某一个tag。
有关git tag的知识,后面用到的时候再介绍。
2.4 指向远端仓库最后一次提交的reference(远端分支)
这类reference以“refs/remotes/”为前缀,指向远端仓库某个SHA-1字符串的标记(也即远端分支),其格式为:
refs/remotes/远端仓库名(如origin)/远端分支reference名(如master)
因此,平时我们操作远端分支的时候,所操作的分支名为(以远端master分支为例):
remotes/origin/master
其实就是省略掉refs字段的reference名称。
总结:知道了这4类reference的含义,以及命名方式之后,我们对各类git名称,会有更深刻的理解。
补充:一些Git保留使用的特殊refs:
- HEAD,指向当前本地分支的当前commit状态
- FETCH_HEAD,指向当前本地分支在最近一次fetch操作时得到的commit状态
- ORIG_HEAD,指向任何merge或rebase之前的刚刚检出时的commit状态
git知识总结-1.git基础之git reference的更多相关文章
- 想要学好Git,应该掌握哪些基础知识?
说到Git,作为程序员的你,在项目开发中一定会使用到或将来也一定会使用到的,但是我相信,很多在使用Git的人,都只是停留一些简单的操作上,比如提交(commit).拉取(pull).推送(push). ...
- git知识总结-1.git基础之数据存储
1.前言 git包含四种对象文件: blob tree commit tag(目前没用到,暂时忽略) 2. git对象的关系 图 git三种对象关系 粗略一看,可以大致感觉出blob类似于文件 ...
- git下的团队合作模型及git基础知识汇集
https://www.atlassian.com/git/tutorials/syncing/git-fetch Syncing svn使用单个中央库来作为开发者之间沟通的桥梁,而协同合作是通过在开 ...
- git学习(一)----基础知识
git是世界上最好用最先进的版本管理系统,那么什么是版本管理系统呢,百度上是这样说的: 举个例子,当你写毕业论文的时候,灵感爆发了修改或者删除了一些内容,但是你还想保留之前的版本,就需要另存为不同的w ...
- Git知识总览(二) git常用命令概览
上篇博客我们从 git clone 和 git status 两个命令开始,引出了一系列的git操作命令, 请参见:<Git知识总览(一) 从 git clone 和 git status 谈起 ...
- Git知识总览(三) 分支的创建、删除、切换、合并以及冲突解决
前两篇博客集中的聊了git的一些常用命令,具体请参见<Git知识总览(一) 从 git clone 和 git status 谈起>.<Git知识总览(二) git常用命令概览> ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- Git 沙盒模拟实战(基础篇)
Git 沙盒模拟实战 分支 现有一个主分支 创建分支 # 创建分支 $ git branch bugFix # 切换到指定分支 $ git checkout bugFix 或者 # 创建分支,并切换到 ...
- git的简单理解及基础操作命令
前端小白一枚,最近开始使用git,于是花了2天看了廖雪峰的git教程(偏实践,对于学习git的基础操作很有帮助哦),也在看<git版本控制管理>这本书(偏理论,内容完善,很不错),针对所学 ...
随机推荐
- 心智与认知(1): 反馈循环(Feedback loop)
目录: ** 0x01 反馈循环(Feedback loop) | How to see System in everyday life ** 0x02 如何像视频游戏一样剖析你的人生?| 打怪升级这 ...
- 使用py,根据日志记录自动生成周报
日志格式如下,思路是如果检测到文件中的内容为5位或者8位,即12.11或18.12.11,同时存在.即认为当前行为日期数据仅作为方便查看日志使用,生成脚本时过滤此行.每次读取到空白行的时候则认为下一条 ...
- 认识 WebService
什么是服务? 1)现在的应用程序变得越来越复杂,甚至只靠单一的应用程序无法完成全部的工作.更别说只使用一种语言了. 2)大家在写应用程序查询数据库时,并没有考虑过为什么可以将查询结果返回给上层的应用 ...
- MySQL官网示例数据库emploees分析使用
1.下载与安装 下载地址:https://github.com/datacharmer/test_db 安装博客:https://blog.csdn.net/appleyuchi/article/de ...
- springboot aop 拦截接口执行时间
/** * @description: 记录接口执行时间日志的记录 * @author: * @create 2018-12-27 16:32 */ @Target(ElementType.METHO ...
- sass基本用法
什么是SASS SASS是一种CSS的开发工具,提供了许多便利的写法,大大节省了设计者的时间,使得CSS的开发,变得简单和可维护. 本文总结了SASS的主要用法.我的目标是,有了这篇文章,日常 ...
- Django中ORM介绍
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- logstash配置多入多出并互相隔离
需求:需要利用同一logstash进程采集不同日志,输出到es的不同index,各输入输出隔离: 主要需要解决如下两个问题: 1.如何加载多个配置文件? 普通启动方式:nohup bin/logsta ...
- 经典面试题-python函数之默认参数
1.可变的默认参数----list 示例: def add(a, mylist=[]): # print(id(mylist)) mylist.append(a) return mylist pri ...
- .NET常用开发框架汇总
分布式缓存框架:Microsoft Velocity:微软自家分布式缓存服务框架.Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度.Redis:是一个高性能的KV数据 ...