问题描述
当我尝试做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
我只希望将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不会输出我想要的结果。有没有办法我可以从输出中提取特定行
解决方法
这需要三个步骤。
-
找到您关心的特定提交。如果
LifecycleObserver
是查找提交的可用方法,则可以将其与步骤2结合使用,但是找到它的正确方法通常是使用单独的git log
命令。 -
将
git rev-list
与git log
伪指令一起使用,与您的操作非常相似(只是省略--format
,它会设置自己的单独格式)。使用--oneline
格式来获取消息正文,包括主题行。 -
例如,用
%B
或sed
来选择所需的行作为正则表达式。也就是说,将第2步中的命令与管道一起用于第二个命令,以查找所需的行。
由于在这种情况下,第1步和第2步可以轻松合并,因此您可以使用例如:
grep
或:
git log --merges -n 1 --format=%B | grep '^Merge '
(请注意,两者之间的区别在于git log --merges -n 1 --format=%B | sed -n -e 3p
命令将查找与模式匹配的每一行,而grep
命令仅打印第三行,而不管哪一行,以sed
开头。