Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1017994
  • 博文数量: 87
  • 博客积分: 3324
  • 博客等级: 中校
  • 技术积分: 1003
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-17 11:37
文章分类

全部博文(87)

文章存档

2014年(3)

2013年(5)

2012年(21)

2011年(13)

2010年(7)

2009年(9)

2008年(4)

2007年(14)

2006年(11)

分类: 项目管理

2013-11-26 18:49:54

refs/remotes/m/

我们都知道git库的远程跟踪分支,在我们使用git branch -a或者git branch -r的时候都会显示出来。例如在Android的源代码中,例如frameworks/base目录下执行git branch -a,可以看到如下输出:

* (no branch)
  remotes/aosp/donut-release
  remotes/aosp/donut-release2
  remotes/aosp/eclair-passion-release
  remotes/aosp/eclair-release
  remotes/aosp/eclair-sholes-release
  remotes/aosp/eclair-sholes-release2
  remotes/aosp/froyo
  remotes/aosp/froyo-release
  remotes/aosp/gingerbread
  remotes/aosp/gingerbread-mr4-release
  remotes/aosp/gingerbread-release
  remotes/aosp/ics-factoryrom-2-release
  remotes/aosp/ics-mr0
  remotes/aosp/ics-mr0-release
  remotes/aosp/ics-mr1
  remotes/aosp/ics-mr1-release
  remotes/aosp/ics-plus-aosp
  remotes/aosp/jb-dev
  remotes/aosp/jb-mr0-release
  remotes/aosp/jb-mr1-dev
  remotes/aosp/jb-mr1-dev-plus-aosp
  remotes/aosp/jb-mr1-release
  remotes/aosp/jb-mr1.1-dev
  remotes/aosp/jb-mr1.1-release
  remotes/aosp/jb-release
  remotes/aosp/master
  remotes/aosp/tools_r20
  remotes/aosp/tools_r21
  remotes/aosp/tools_r22
  remotes/m/android-4.2.2_r1.2 -> refs/tags/android-4.2.2_r1.2
 
  所有以remotes/aosp/开头的分支都很好理解。就是在真正的远程服务器aosp上的库里,存在着对应的分支。
 
  有一个分支名称看起来很奇怪:remotes/m/android-4.2.2_r1.2
 
  更奇怪的是这个分支的名称后面还有一个箭头,指向另外一个名称。
 
  那么这个remotes/m/android-4.2.2_r1.2 -> refs/tags/android-4.2.2_r1.2到底是什么意思呢?
 
  其实并不神秘,首先看remotes/m/android-4.2.2_r1.2,这个就是一个repo的清单库的分支,也就是当你在执行repo init -U [URL] -b [branch_name]的时候,-b参数后面的分支。如果你repo init的时候,没有指定过-b参数。那么这里就会显示remotes/m/master。
 
  那么这个箭头后面的refs/tags/android-4.2.2_r1.2是什么呢?它就是在清单库里的default.xml里面指定的单个git库的revision值。
 
  需要说明的一点是,这个是repo工具自己添加的一个ref,只是利用了git的机制显示了出来。
 
  那么repo工具添加这个功能有什么用呢?其实就是为了让用户方便的知道自己目前工作在清单库的哪个分支上。当前的清单库的这个分支又引用了当前git库的哪个branch/tag上。
阅读(12301) | 评论(1) | 转发(2) |
给主人留下些什么吧!~~

KANGOD2019-10-25 10:35:39

赞。 repo 文档 提过一句。
Running repo sync removes any commits retrieved with repo download. Or you can check out the remote branch using git checkout m/master

链接贴不上。