如何查找合并提交引入的指定字符串?

问题描述 投票:0回答:1

有没有办法搜索合并提交中引入的特定字符串?

git log -S
不起作用,而且
git log -m -p | less
太慢了。

要重现问题,给定设置:

git init -b a
touch init
git add init
git commit -m init
echo a > init
git commit -am a
git switch -c b HEAD~
echo b > init
git commit -am b
git merge a # this would fail due to conflict
echo ab > init
git commit -a --no-edit

日志会是这样的:

λ git log --graph --oneline
*   c65b4ce (HEAD -> b) Merge branch 'a' into b
|\  
| * 59d5818 (a) a
* | 0967c4b b
|/  
* 40fac69 init

如您所见,

git log -S
可以使用搜索词
a
b
找到相应的提交:

λ git log --oneline -S a
59d5818 a

λ git log --oneline -S b
0967c4b b

预计

我希望

git log -S
可以通过术语
c65b4ce
找到合并提交
ab
:

λ git log --oneline -S ab
c65b4ce Merge branch 'a' into b

实际

但是,它什么也没打印:

λ git log --oneline -S ab
# prints nothing
git git-log
1个回答
0
投票

对于合并提交,您需要指定 --diff-merges=

git log --oneline -S ab --diff-merges=c  # -c for short
git log --oneline -S ab --diff-merges=cc  # --cc for short
© www.soinside.com 2019 - 2024. All rights reserved.