git for-each-ref的--format选项的有效字段是什么?

时间:2014-01-21 11:29:18

标签: git

我正在尝试查找在存储库中创建的第一个分支。为此,我使用了:

git for-each-ref --sort=commiterdate --format='%(commiterdate:short) %(refname:short)' --count=1

但是我想了解更多关于这个分支的信息。这个分支有多长,它什么时候合并回主干等。 是否有可用的字段选项列表?我尝试使用谷歌搜索但找不到任何东西。

3 个答案:

答案 0 :(得分:38)

我在git存储库file builtin/for-each-ref.c上找到了一个字段列表:

} valid_atom[] = {
    { "refname" },
    { "objecttype" },
    { "objectsize", FIELD_ULONG },
    { "objectname" },
    { "tree" },
    { "parent" },
    { "numparent", FIELD_ULONG },
    { "object" },
    { "type" },
    { "tag" },
    { "author" },
    { "authorname" },
    { "authoremail" },
    { "authordate", FIELD_TIME },
    { "committer" },
    { "committername" },
    { "committeremail" },
    { "committerdate", FIELD_TIME },
    { "tagger" },
    { "taggername" },
    { "taggeremail" },
    { "taggerdate", FIELD_TIME },
    { "creator" },
    { "creatordate", FIELD_TIME },
    { "subject" },
    { "body" },
    { "contents" },
    { "contents:subject" },
    { "contents:body" },
    { "contents:signature" },
    { "upstream" },
    { "symref" },
    { "flag" },
    { "HEAD" },
    { "color" },
};

答案 1 :(得分:1)

git for-each-ref --format提到:

从所显示的引用及其指向的对象中插入%(fieldname)的字符串。

它是指具有完整列表的“ FIELDS NAMES”部分。

要了解这些选项的实际作用,您可以向t/t6300-for-each-ref.sh报告,其中说明了--format使用的所有“原子”。

那些原子刚随着Git 2.29(Q4 2020)进化而来:“ --format=”命令的“ for-each-ref”选项,朋友们学到了更多的技巧,例如现在,适用于“ {{1}”的“ :short”后缀也可以用于“ objectname”,“ parent”等。

请参见commit 905f0a4commit 47d4676commit 26bc0aacommit 837adb1commit 87d3bebcommit e7601ebcommit 5101100,{{3} }(2020年8月21日)通过commit b82445d
(由Hariom Verma (harry-hov)Junio C Hamano -- gitster --中合并,2020年9月9日)

commit c25fba9:向“父”原子添加tree修饰符

指导者:克里斯蒂安·库德(Christian Couder)
指导者:Heba Waly
签名人:Hariom Verma

有时在使用'short'原子时,用户可能希望查看缩写而不是完整的40个字符的哈希。

就像'parent'一样,用户可以方便地使用objectname:short选项来打印':short=<length>'哈希。

让我们为'parent'原子引入short选项。

并且:

ref-filter:为“主题”原子添加parent选项

指导者:克里斯蒂安·库德(Christian Couder)
指导者:Heba Waly
签名人:Hariom Verma

当前,subject不接受任何参数。这次提交将sanitize格式选项引入到“主题”原子。

sanitize-打印经过清理的主题行,适用于文件名。

例如

subject:sanitize

%(subject): "the subject line" %(subject:sanitize): "the-subject-line" 现在包含在其ref-filter中:

字段git for-each-ref代替contents:subject,也可以用于>获得相同的结果。可以将subject附加到:sanitize中,以适合文件名的主题​​行。

答案 2 :(得分:-6)

您想使用git for-each-ref,请查看git help for-each-ref。或here