有没有办法搜索合并提交中引入的特定字符串?
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
对于合并提交,您需要指定 --diff-merges=
git log --oneline -S ab --diff-merges=c # -c for short
git log --oneline -S ab --diff-merges=cc # --cc for short