git 对使用 grep 命令过滤的所有文件中的特定行的指责
git blame of particular lines inside all files filtered with grep command
我知道如何在文件中 运行 gblame。
我知道如何 grep 目录中所有文件中的内容。
我希望看到围绕包含内容的特定行的 gblame。示例:
$ blame -R "content" ./
我看到了一个文件列表。我想把所有的主题都归咎于,并了解谁触及了那些代码行。
用needle查找文件,对每个文件blame,对每个blame输出search needle
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
你可以用 Perl 来做:
git grep -n 'content' | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'
如果你想创建一个自定义命令,你可以在别名部分的 gitconfig 中添加这样的东西:
gb = "!f() { git grep -n | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'; }; f"
我写了这个小脚本来完成git grep + blame:
#!/bin/bash
if [ "" = "" ] ; then
echo "usage: [=10=] <term>" 1>&2
exit 1
fi
for file in $(git grep | cut -d ':' -f 1 | uniq) ; do
echo $file ::
git blame $file | grep
done
我知道如何在文件中 运行 gblame。
我知道如何 grep 目录中所有文件中的内容。
我希望看到围绕包含内容的特定行的 gblame。示例:
$ blame -R "content" ./
我看到了一个文件列表。我想把所有的主题都归咎于,并了解谁触及了那些代码行。
用needle查找文件,对每个文件blame,对每个blame输出search needle
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
你可以用 Perl 来做:
git grep -n 'content' | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'
如果你想创建一个自定义命令,你可以在别名部分的 gitconfig 中添加这样的东西:
gb = "!f() { git grep -n | perl -F':' -anpe '$_=`git blame -L$F[1],+1 $F[0]`'; }; f"
我写了这个小脚本来完成git grep + blame:
#!/bin/bash
if [ "" = "" ] ; then
echo "usage: [=10=] <term>" 1>&2
exit 1
fi
for file in $(git grep | cut -d ':' -f 1 | uniq) ; do
echo $file ::
git blame $file | grep
done