我试图使用git log -L <start>,<end>:<filename>
,但我希望输出非常有限(实际上只是哈希值)。虽然--pretty以我想要的格式打印提交信息,但我没有找到一种不显示差异的方法......
e.g。在linux-next上我尝试的是:
git log --pretty=format:"%H" -s -L 70,70:./arch/x86/include/asm/irqflags.h
其中(根据联机帮助页)-s应该抑制diff的输出,但是输出是:
$ git log --pretty=format:"%H" -s -L 70,70:./arch/x86/include/asm/irqflags.h
6abcd98ffafbff81f0bfd7ee1d129e634af13245
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h
--- a/include/asm-x86/irqflags.h
+++ b/include/asm-x86/irqflags.h
@@ -1,2 +64,1 @@
-#ifdef CONFIG_X86_32
-# include "irqflags_32.h"
+{
96a388de5dc53a8b234b3fd41f3ae2cedc9ffd42
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h
--- /dev/null
+++ b/include/asm-x86/irqflags.h
@@ -0,0 +1,2 @@
+#ifdef CONFIG_X86_32
+# include "irqflags_32.h"
我正在使用git版本2.10.2
答案 0 :(得分:1)
-L
选项目前(显然从未与)-s
/ --no-patch
兼容,因为来自this code的line_log_print
来自-L
生效时the top of log_tree_commit
。所述代码仅从任何匹配的提交输出整个所选择的行范围。 (你可以修补hack以遵守diff输出选项。)
(另一个明显的解决方法是使用git rev-list
代替git log
,但-L
正如第一个链接所指出的那样,首先没有正确集成,所以git rev-list
无法处理它。)
答案 1 :(得分:1)
一个grep解决方案是将输出通过管道输出到grep,只打印与提交匹配的行:
innerHTML
grep匹配每个日志条目的第一行,并使用-A标志打印接下来的4行
虽然有点冗长。如果有人有更好的解决方案,我很乐意听到!
答案 2 :(得分:1)
使用Git 2.22(2019年第二季度)将更加清楚。
“ git log -L<from>,<to>:<path>
”和“ -s
”没有取消补丁
可以输出。
这已得到纠正。
请参见commit 05314ef的commit 9f607cd(2019年3月11日)和Jeff King (peff
)(2019年3月7日)。
(由Junio C Hamano -- gitster
--在commit 31df2c1中合并,2019年4月9日)
line-log
:检测不受支持的格式如果您使用“
log -L
”或“--raw
”或“--stat
”这样的输出格式,我们将无提示地忽略该格式,仅输出正常的补丁。
让我们检测并抱怨这一点,至少可以告诉用户发生了什么事。
现在它将清楚显示:
-L does not yet support diff formats besides -p and -s