我知道如何在文件中运行gblame。
我知道如何在目录中的所有文件中grep内容。
我希望看到包含内容的特定行周围的gblame。例如:
$ blame -R "content" ./
我看到了一个文件列表。我想要了解所有主题,并了解谁触及了这些代码行。
答案 0 :(得分:10)
你可以使用Perl:
git grep -n 'content' | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'
如果你想创建一个自定义命令,你可以在别名部分的gitconfig中添加这样的东西:
gb = "!f() { git grep -n $1 | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'; }; f"
答案 1 :(得分:0)
查找带针的文件,每个文件责备,以及每个blame输出搜索针
for file in `grep -lr needle *`; do git blame $file |grep needle ; done
您可以使用-C
添加上下文for file in `grep -lr needle *`; do git blame $file |grep -C5 needle ; done
答案 2 :(得分:0)
我写了这个小脚本来完成git grep + blame:
#!/bin/bash
if [ "$1" = "" ] ; then
echo "usage: $0 <term>" 1>&2
exit 1
fi
for file in $(git grep $1 | cut -d ':' -f 1 | uniq) ; do
echo $file ::
git blame $file | grep $1
done