鍍金池/ 教程/ Java/ Git 引用
儲藏
Git 樹名
子模塊
使用 Git Grep 進(jìn)行搜索
建立一個私有倉庫
追蹤分支
Git 的撤消操作 - 重置,簽出和撤消
Git 和 Email
定制 Git
查看 Git 對象
Git 是如何存儲對象的
Git 標(biāo)簽
交互式 rebase
獲得一個 Git 倉庫
高級分支與合并
Git 對象模型
Git 日志
建立一個公共倉庫
分布式的工作流程
交互式添加
維護(hù) Git
安裝與初始化
安裝 Git
更底層的 Git
歡迎使用 Git
查找問題的利器 - Git Blame
找回丟失的對象
比較提交
創(chuàng)建新的空分支
查找問題的利器 - Git Bisect
Git 引用
忽略某些文件
傳輸協(xié)議
打包文件
Git 索引
rebase
正常的工作流程
分支合并
Git 目錄與工作目錄

Git 引用

分支(branch),遠(yuǎn)程跟蹤分支(remote-tracking branch)以及標(biāo)簽(tag)都是對提交的引用。所有的引用是用‘refs’開頭,以斜杠分割的路徑。到目前為此,我們用到的引用名稱其實是它們的簡寫版本:

  • 分支testrefs/heads/test的簡寫.
  • 標(biāo)簽v2.6.18refs/tags/v2.6.18的簡寫.
  • origin/masterrefs/remotes/origin/master的簡寫.

偶爾的情況下全名會比較有用,例如你的標(biāo)簽和分支重名了,你應(yīng)該用全名去區(qū)分它們。

(新創(chuàng)建的引用會依據(jù)它們的名字存放在.git/refs目錄中。然而,為了提高效率,它們也可能被打包到一個文件中,參見 git pack-refs)。

另一個有用的技巧是,倉庫的名字可以代表該倉庫的 HEAD。例如,‘origin’是訪問‘origin’中的 HEAD 分支的一個捷徑。

要了解 Git 查找引用路徑的完全列表,以及多個同名簡寫引用的優(yōu)先級關(guān)系,請參見 git rev-parse 中的‘SPECIFYING REVISIONS’。

顯示某分支特有的提交

假設(shè)你想要查看在‘master"’分支可達(dá)(reachable)但其他任何分支不可達(dá)的提交。

我們可以使用 git show-ref 列出倉庫中所有的頭:

$ git show-ref --heads
bf62196b5e363d73353a9dcf094c59595f3153b7 refs/heads/core-tutorial
db768d5504c1bb46f63ee9d6e1772bd047e05bf9 refs/heads/maint
a07157ac624b2524a059a3414e99f6f44bebc1e7 refs/heads/master
24dbc180ea14dc1aebe09f14c8ecf32010690627 refs/heads/tutorial-2
1e87486ae06626c2f31eaa63d26fc0fd646c8af2 refs/heads/tutorial-fixes

我們可以使用 cut 和 grep 得到‘分支-頭’(branch-head)部分,不需要‘master’:

$ git show-ref --heads | cut -d' ' -f2 | grep -v '^refs/heads/master'
refs/heads/core-tutorial
refs/heads/maint
refs/heads/tutorial-2
refs/heads/tutorial-fixes

然后我們就可以查看 master 中特有的提交:

$ gitk master --not $( git show-ref --heads | cut -d' ' -f2 |
                grep -v '^refs/heads/master' )

很明顯上面的命令可以有無數(shù)種變種;例如你想查看倉庫中所有的分支可達(dá)但標(biāo)簽不可達(dá)的提交:

$ gitk $( git show-ref --heads ) --not  $( git show-ref --tags )
上一篇:Git 樹名下一篇:安裝與初始化