git log -L没有diff

时间:2017-01-02 13:16:01

标签: git git-log

我试图使用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

3 个答案:

答案 0 :(得分:1)

-L选项目前(显然从未与)-s / --no-patch兼容,因为来自this codeline_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 05314efcommit 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