?
This document uses PHP Chinese website manual Release
git-for-each-ref - 每個參考的輸出信息
git for-each-ref [--count=<count>] [--shell|--perl|--python|--tcl] [(--sort=<key>)…] [--format=<format>] [<pattern>…] [--points-at=<object>] (--merged[=<object>] | --no-merged[=<object>]) [--contains[=<object>]] [--no-contains[=<object>]]
迭代所有匹配的ref <pattern>
并根據(jù)給定的值顯示它們<format>
,然后根據(jù)給定的集合對它們進(jìn)行排序<key>
。如果<count>
給出,請在顯示多個參考后停止。插入的值<format>
可以選擇性地作為指定宿主語言中的字符串文本引用,以便用該語言直接進(jìn)行評估。
<pattern>…
如果給出了一個或多個模式,則只顯示與至少一個模式相匹配的引用,或者使用fnmatch(3)或從字面上匹配,在后一種情況下完全匹配或從開始直到斜杠。
--count=<count>
默認(rèn)情況下,該命令顯示所有匹配的參考<pattern>
。該選項會在顯示多個參考文件后停止。
--sort=<key>
要排序的字段名稱。前綴-
按值的降序進(jìn)行排序。未指定時refname
使用。您可以多次使用--sort = <key>選項,在這種情況下,最后一個鍵變?yōu)橹麈I。
--format=<format>
一個字符串,%(fieldname)
從顯示的ref和它指向的對象中插入。如果fieldname
前綴為asterisk(*
)并且ref指向標(biāo)記對象,則使用標(biāo)記對象引用的對象中的字段的值(而不是標(biāo)記對象中的字段)。未指定時,<format>
默認(rèn)為%(objectname) SPC %(objecttype) TAB %(refname)
。它還插值%%
到%
,和%xx
其中xx
是十六進(jìn)制數(shù)字插值以十六進(jìn)制碼字符xx
; 例如%00
內(nèi)插到\0
(NUL),%09
到\t
(TAB)和%0a
到\n
(LF)。
--color = <when>:尊重--format
選項中指定的任何顏色。該<when>
字段必須是中的一個always
,never
或者auto
(如果<when>
不存在,表現(xiàn)得好像always
給予)。
--shell --perl --python --tcl
如果給定,則替換%(fieldname)
占位符的字符串將被引用為適用于指定主機語言的字符串文字。這是為了產(chǎn)生一個可以直接eval
編輯的scriptlet 。
--points-at=<object>
只列出指向給定對象的ref。
--merged=<object>
只列出其提示可從指定提交(HEAD,如果未指定)可訪問的ref,與不兼容--no-merged
。
--no-merged=<object>
只列出其提示無法從指定提交(HEAD,如果未指定)到達(dá)的ref,與之不兼容--merged
。
--contains=<object>
只列出包含指定提交的引用(如果未指定,則為HEAD)。
--no-contains=<object>
只列出不包含指定提交的引用(如果未指定,則為HEAD)。
--ignore-case
排序和過濾ref是不區(qū)分大小寫的。
引用對象中結(jié)構(gòu)化字段的各種值可用于內(nèi)插到結(jié)果輸出中,或作為排序鍵。
對于所有對象,可以使用以下名稱:
refname
參考名稱($ GIT_DIR /之后的部分)。對于ref的append不含糊不清的短名稱:short
。選項core.warnAmbiguousRefs用于選擇嚴(yán)格的縮寫模式。如果lstrip=<N>
(rstrip=<N>
)將被附加,條<N>
斜線分隔徑分量從refname的前部(背面)(例如%(refname:lstrip=2)
變成refs/tags/foo
為foo
與%(refname:rstrip=2)
轉(zhuǎn)動refs/tags/foo
成refs
)。如果<N>
是一個負(fù)數(shù),從指定的端部帶一樣多路徑成分作為必要離開-<N>
路徑組件(例如%(refname:lstrip=-2)
變成refs/tags/foo
為tags/foo
和%(refname:rstrip=-1)
導(dǎo)通refs/tags/foo
到refs
)。當(dāng)ref沒有足夠的組件時,如果使用正數(shù)<N>剝離,結(jié)果將變?yōu)榭兆址蛘呷绻褂秘?fù)數(shù)<N>剝離,則結(jié)果變?yōu)橥暾膔efname。兩者都不是錯誤。
strip
可以作為synomym來使用lstrip
。
objecttype
類型的對象的(blob
,tree
,commit
,tag
)。
objectsize
對象的大?。ㄅcgit cat-file -s
報告相同)。
objectname
對象名稱(又名SHA-1)。對于對象名稱的非模糊縮寫追加:short
。對于具有所需長度的對象名稱的縮寫append :short=<length>
,其中最小長度為MINIMUM_ABBREV。長度可能會超過以確保唯一的對象名稱。
upstream
顯示的參考文獻(xiàn)中可以考慮為“上游”的本地參考文獻(xiàn)的名稱。尊重:short
,:lstrip
并:rstrip
以與refname
上述相同的方式。此外,:track
還要顯示“前N,后M”并:trackshort
顯示簡短版本:“>”(前面),“<”(后面),“<>”(前后)或“=”(同步) 。:track
當(dāng)遇到未知的上游參考時也打印“消失”。追加:track,nobracket
顯示無括號的追蹤信息(即“前N,后M”)。如果裁判沒有跟蹤信息,則不起作用。所有選項除外nobracket
是互斥的,但如果一起使用,則選擇最后一個選項。
push
代表@{push}
所顯示文獻(xiàn)位置的本地參考文獻(xiàn)的名稱。尊重:short
,:lstrip
,:rstrip
,:track
,和:trackshort
選項upstream
呢。如果未@{push}
配置ref,則生成一個空字符串。
HEAD
*
如果HEAD與當(dāng)前參考(已簽出的分支)匹配,則返回“否則”。
color
更改輸出顏色。接下來:<colorname>
,在git-config [1]的“CONFIGURATION FILE”部分的Values下描述顏色名稱。例如,%(color:bold red)
。
align
將%(align:...)和%(end)之間的內(nèi)容左對齊,中對齊或右對齊。該“對齊”之后width=<width>
和position=<position>
在用逗號,其中所分離的任何次序<position>
要么左,右或中間,被留默認(rèn)和<width>
與對準(zhǔn)的內(nèi)容的總長度。為簡潔起見,可以省略“width =”和/或“position =”前綴,而使用<width>和<位置>。例如,%(align:<width>,<position>)
。如果內(nèi)容長度大于寬度,則不執(zhí)行對齊。如果使用--quote
%(align:...)和%(end)之間的所有內(nèi)容進(jìn)行引用,但是如果嵌套,則只有最頂層執(zhí)行引用。
if
用作%(if)...%(then)...%(end)或%(if)...%(then)...%(else)...%(end)。如果在%(if)之后有值或字符串的原子,則%(then)后面的所有內(nèi)容都將被打印,否則如果使用%(else)原子,則打印%(else)后的所有內(nèi)容。當(dāng)在%(then)之前評估字符串時,我們會忽略空格,當(dāng)我們使用打印“*”或“”的%(HEAD)原子時,這很有用,我們只想將該if
條件應(yīng)用于HEAD
ref。追加“:等于= <字符串>”或“:notequals = <字符串>”以比較%(如果......)和%(然后)原子與給定字符串之間的值。
symref
給定的符號ref引用的ref。如果不是符號參考,則不會打印任何內(nèi)容。尊重:short
,:lstrip
并:rstrip
在為同樣的方式選擇refname
以上。
除了上述之外,用于提交和標(biāo)簽對象,報頭字段名(tree
,parent
,object
,type
,和tag
)可以被用來指定在報頭字段中的值。
對于提交和標(biāo)記對象,特殊字段creatordate
和creator
字段將根據(jù)對象類型與committer
或tagger
字段中的相應(yīng)日期或名稱 - 電子郵件日期元組相對應(yīng)。這些旨在用于混合使用注釋和輕量級標(biāo)簽。
有名字的電子郵件最新的元組作為其值的字段(author
,committer
,和tagger
)可以與后綴name
,email
以及date
提取命名組件。
提交和標(biāo)簽對象中的完整消息是contents
。它的第一行是contents:subject
,主題是提交消息的所有行連接到第一個空白行。接下來的一行是contents:body
,body是第一個空白行之后的所有行??蛇x的GPG簽名是contents:signature
。N
消息的第一行是使用獲得的contents:lines=N
。此外,由git-interpret-trailers [1]解釋的預(yù)告片也可以獲得contents:trailers
。
用于排序目的,與字段排序按數(shù)值順序排列的數(shù)字值(objectsize
,authordate
,committerdate
,creatordate
,taggerdate
)。所有其他字段都用于按字節(jié)值順序排序。
還有一個選項可以按版本排序,這可以通過使用字段名version:refname
或其別名來完成v:refname
。
在任何情況下,引用不適用于由ref引用的對象的字段的字段名稱都不會導(dǎo)致錯誤。它返回一個空字符串。
作為日期類型字段的特殊情況,您可以通過添加:
日期格式名稱來指定日期格式(請參閱--date
git-rev-list [1]選項的值)。
像%(align)和%(if)這樣的一些原子總是需要匹配的%(end)。我們稱之為“開放原子”,有時將它們表示為%($ open)。
當(dāng)腳本語言特定的引用有效時,根據(jù)開放原子的語義評估頂級開放原子與其匹配的%(end)之間的所有內(nèi)容,并僅引用頂級結(jié)果。
直接生成格式化文本的示例。顯示最近3個標(biāo)記的提交:
#!/bin/sh git for-each-ref --count=3 --sort='-*authordate' \--format='From: %(*authorname) %(*authoremail)Subject: %(*subject)Date: %(*authordate)Ref: %(*refname)%(*body)' 'refs/tags'
一個簡單的例子,顯示了在輸出中使用shell eval,展示了--shell的使用。列出所有頭的前綴:
#!/bin/sh git for-each-ref --shell --format="ref=%(refname)" refs/heads | \while read entrydo eval "$entry" echo `dirname $ref`done
更詳細(xì)的標(biāo)簽報告,證明格式可能是整個腳本:
#!/bin/sh fmt=' r=%(refname) t=%(*objecttype) T=${r#refs/tags/} o=%(*objectname) n=%(*authorname) e=%(*authoremail) s=%(*subject) d=%(*authordate) b=%(*body) kind=Tag if test "z$t" = z then # could be a lightweight tag t=%(objecttype) kind="Lightweight tag" o=%(objectname) n=%(authorname) e=%(authoremail) s=%(subject) d=%(authordate) b=%(body) fi echo "$kind $T points at a $t object $o" if test "z$t" = zcommit then echo "The commit was authored by $n $e at $d, and titled $s Its message reads as:" echo "$b" | sed -e "s/^/ /" echo fi ' eval=`git for-each-ref --shell --format="$fmt" \ --sort='*objecttype' \ --sort=-taggerdate \ refs/tags`eval "$eval"
示例顯示%(if)...%(then)...%(else)...%(end)的用法。這以當(dāng)前分支為前綴。
git for-each-ref --format="%(if)%(HEAD)%(then)* %(else) %(end)%(refname:short)" refs/heads/
顯示%(if)...%(then)...%(end)的用法的示例。這將打印作者名稱(如果存在)。
git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Authored by: %(authorname)%(end)"