我正在尝试使用git log -L <start>,<end>:<filename>
,但我希望输出非常有限(实际上只是哈希)。虽然--pretty以我想要的格式打印提交信息,但我没有找到一种不显示差异的方法...
例如在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
-L
选项目前(并且显然从来没有)与-s
/ --no-patch
兼容,因为this code从line_log_print
调用,当the top of log_tree_commit
生效时从-L
调用。所述代码仅从任何匹配的提交输出整个所选择的行范围。 (你可以修补hack以遵守diff输出选项。)
(另一个明显的解决方法是使用git rev-list
而不是git log
,除了-L
,因为第一个链接注释,没有正确集成在第一位,所以git rev-list
不处理它。)
一个grep解决方案是将输出通过管道输出到grep,只打印与提交匹配的行:
git log -L 10,11:example.txt | grep 'commit \w' -A 4
grep匹配每个日志条目的第一行,并使用-A标志打印接下来的4行
虽然它有点冗长。如果有人有更好的解决方案,我们很乐意听到!
Git 2.22(2019年第二季度)将更加清晰。
“git log -L<from>,<to>:<path>
”与“-s
”没有抑制补丁输出,因为它应该。
这已得到纠正。
参见commit 05314ef(2019年3月11日)和commit 9f607cd(2019年3月7日)的Jeff King (peff
)。
(由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