Git 按特定模式在存储库中查找我的行

Git 按特定模式在存储库中查找我的行,git,intellij-idea,Git,Intellij Idea,我有git存储库。我想找出我写的具体行 例如,我希望看到所有带有文本的行:TODO、TODO、FIXME、FIXME 我知道git grep,但它显示了所有作者的行。但我只想看我的待办事项 我使用这个想法,但它并没有过滤作者的待办事项 我很困惑。有人能帮我吗 UPD想法:目前不可能将VCS集成到TODO中答案不准确: 您可以查看您创建的提交(您是该提交的作者),以及diff在其中引入了新的“TODO”: 第二种方法可以是: 查找带有TODO标记的文件 对每个文件运行git 并保留行,带有TO

我有git存储库。我想找出我写的具体行

例如,我希望看到所有带有文本的行:TODO、TODO、FIXME、FIXME

我知道git grep,但它显示了所有作者的行。但我只想看我的待办事项

我使用这个想法,但它并没有过滤作者的待办事项

我很困惑。有人能帮我吗

UPD想法:目前不可能将VCS集成到TODO中

答案不准确:

您可以查看您创建的提交(您是该提交的作者),以及diff在其中引入了新的“TODO”:


第二种方法可以是:

  • 查找带有
    TODO
    标记的文件
  • 对每个文件运行
    git
  • 并保留行,带有
    TODO
    标志,以及您被称为作者的位置
比如:

# get file list :
grep -r . -i -E "(TODO|FIXME)" -l   > list.txt
# check each file :
cat list.txt | while read file; do
    git blame $file | grep "My Name" | grep -i -E (TODO|FIXME)
done
请注意,如果其他人编辑了该行(例如:重新插入该行),
git dull
将提及该其他人的姓名作为作者。
相反,如果修改了这样一行,您的名字将显示在git的输出中


如果在
TODO
行中未指定作者姓名,则必须将文件内容与git中文件的历史记录交叉,以便能够匹配此行的作者。IDE必须做同样的工作


问题是,很难(如果不是不可能的话)以准确的方式做到这一点:在git的历史记录中重写提交(rebase、squash等)是很常见的,尽管git试图在有意义时保留提交的作者,但有时提交的“原始”作者可能会丢失。

您可以尝试这个简单的命令,使用
git grep
获取结果,然后使用
awk
分割结果,在
awk
内部,使用
grep gun
获取更多信息,最后使用
grep
过滤输出

$ git grep -n "TODO" | awk -F: '{system("git blame -f -L "$2","$2" "$1)}' |grep "The Author Name"

.bash 4.3.46$:未找到命令我应该安装simh或systemd的软件包是什么?还是别的?@YShinkarev
git
awk
/
gawk
,还有
grep
哦,明白了,我出错了,因为“grep”和“|”没有空格。嗯,好像
git log--author=“My Name”-S TODO-p
把我所有的行都返回给我
$ git grep -n "TODO" | awk -F: '{system("git blame -f -L "$2","$2" "$1)}' |grep "The Author Name"