【发布时间】:2014-04-18 21:55:15
【问题描述】:
我想获取与 git 中的分支 glob 匹配的所有提交的日志。
考虑以下历史记录(小写字母是提交,大写提交是指向那里的分支)
/-b --XX, tag2
a--c --XY, tag1
\-d --ZZ, HEAD
我希望所有与分支 glob abc* 匹配的提交(在此示例中没有,但可能有一些),与与标记 glob tag* 匹配的提交合并(在此示例中为 tag1 和 tag2)。我会期待
git log --branches="abc*" --tags="tag*"
返回 a、b 和 c,但它返回 a 和 d。
【问题讨论】:
-
我不完全理解你的符号。当您说
--branches="abc"时,实际上是什么来代替“a”?在您的第一个图中,“a”似乎是一个提交,所以“a”将是一个提交哈希? -
git log --tags="tag*"返回 b、c 和 a。这似乎和预期的一样? -
我不知道是否有任何分支与分支 glob 匹配,所以我不能忽略它。将其更正为
--branches="abc*",其中abc将由我的应用程序确定。 -
对我来说,
git log --branches="notmatchinganything" --tags="tag*"匹配 a、b 和 c。这不是你想要的吗? -
这实际上是一个完全不同的问题:如果分支/标签 glob 不包含特殊字符,Git 会自动将
/*添加到它们,这让我在这些测试中多次失望。使调试变得更糟的是,只要--tags和--branches参数找不到任何东西,它就会默认为HEAD。