refs remotes m分支的含義

2021-10-08 09:56:19 字數 1866 閱讀 3342

我們都知道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上。

分支管理 建立分支 合併分支

分支名前面有 代表此分支是當前所在分支 常用命令 步驟 建立分支 git brabch 分支名 檢視所有分支 git branch 切換到指定分支 git checkout 指定的分支名 代表當前所在分支 在自己的分支上進行修改並push到遠端倉庫對應的分支,最後的push的命令 git push ...

SVN建立分支 合併分支 切換分支

在建立專案版本庫時,可首先建好專案資料夾,並在其中建立trunk,branches,tags三個空的子目錄。這樣在trunk中開始進行開發 trunk是主分支,是日常開發進行的地方。branches是分支。一些階段性的release版本,這些版本是可以繼續進行開發和維護的,則放在branches目錄...

SVN建立分支 合併分支 切換分支

在建立專案版本庫時,可首先建好專案資料夾,並在其中建立trunk,branches,tags三個空的子目錄。這樣在trunk中開始進行開發 trunk是主分支,是日常開發進行的地方。branches是分支。一些階段性的release版本,這些版本是可以繼續進行開發和維護的,則放在branches目錄...