git log -L没有diff

问题描述 投票:3回答:3

我正在尝试使用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

git git-log
3个回答
1
投票

-L选项目前(并且显然从来没有)与-s / --no-patch兼容,因为this codeline_log_print调用,当the top of log_tree_commit生效时从-L调用。所述代码仅从任何匹配的提交输出整个所选择的行范围。 (你可以修补hack以遵守diff输出选项。)

(另一个明显的解决方法是使用git rev-list而不是git log,除了-L,因为第一个链接注释,没有正确集成在第一位,所以git rev-list不处理它。)


1
投票

一个grep解决方案是将输出通过管道输出到grep,只打印与提交匹配的行:

git log -L 10,11:example.txt | grep 'commit \w' -A 4

grep匹配每个日志条目的第一行,并使用-A标志打印接下来的4行

虽然它有点冗长。如果有人有更好的解决方案,我们很乐意听到!


1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.