如何从 git log --merges -n 1 中获取特定行

How to get a particular line from git log --merges -n 1

当我尝试执行 git log --merges -n 1 时,我看到以下输出

Merge: 12hjkda1222
Author: testuser
Date:   Tue Sep 1 22:38:42 2020 -0400

    test-1.1

    Merge in proj/repo from release/test-1.1 to master

    * commit 'aczlxhclzsjcfpod2369841':
      release

我只想要 Merge in proj/repo 从 release/test-1.1 到 master 的行。尝试使用 git log --oneline --format=%B -n 1 HEAD 和 git log --oneline --format=%B -n 1 HEAD | head -n 1 不输出我正在寻找的结果。有没有一种方法可以从输出中提取特定行

这需要三个步骤。

  1. 找到您关心的特定提交。如果 git log 是查找提交的可用方法,您可以将此与步骤 2 结合使用,但通常找到它的正确方法是使用单独的 git rev-list 命令。

  2. git log--format 指令一起使用,这与您的操作方式非常相似(只是省略了设置自己单独格式的 --oneline )。使用 %B 格式获取邮件正文,包括主题行,就像您正在做的那样。

  3. 选择所需的行,例如,使用 sedgrep 作为正则表达式。也就是说,将第 2 步中的命令与管道一起使用到第二个命令中,以找到您喜欢的行。

由于在这种情况下,步骤 1 和步骤 2 可以很容易地结合起来,您可以使用,例如:

git log --merges -n 1 --format=%B | grep '^Merge '

或:

git log --merges -n 1 --format=%B | sed -n -e 3p

(请注意,它们之间的区别在于 grep 命令将查找与模式匹配的每一行,而 sed 命令只是打印第三行,而不管是哪一行,如果任何,以 Merge ).

开头