如何从 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 不输出我正在寻找的结果。有没有一种方法可以从输出中提取特定行
这需要三个步骤。
找到您关心的特定提交。如果 git log
是查找提交的可用方法,您可以将此与步骤 2 结合使用,但通常找到它的正确方法是使用单独的 git rev-list
命令。
将 git log
与 --format
指令一起使用,这与您的操作方式非常相似(只是省略了设置自己单独格式的 --oneline
)。使用 %B
格式获取邮件正文,包括主题行,就像您正在做的那样。
选择所需的行,例如,使用 sed
或 grep
作为正则表达式。也就是说,将第 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
).
开头
当我尝试执行 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 不输出我正在寻找的结果。有没有一种方法可以从输出中提取特定行
这需要三个步骤。
找到您关心的特定提交。如果
git log
是查找提交的可用方法,您可以将此与步骤 2 结合使用,但通常找到它的正确方法是使用单独的git rev-list
命令。将
git log
与--format
指令一起使用,这与您的操作方式非常相似(只是省略了设置自己单独格式的--oneline
)。使用%B
格式获取邮件正文,包括主题行,就像您正在做的那样。选择所需的行,例如,使用
sed
或grep
作为正则表达式。也就是说,将第 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
).