我有git存储库。我想找到我写的特定行。
例如,我想看看我的所有文字行:TODO,todo,FIXME,fixme。
我知道git grep,但它显示了所有作者的界限。但我想只看到我的TODO。
我使用IDEA,但作者没有在TODO中使用过滤器。
我很困惑。有人能帮助我吗?
UPD IDEA:目前无法与TODO进行VCS集成
答案 0 :(得分:1)
您可以尝试使用此简单命令,使用git grep
获取结果,然后使用awk
拆分结果,在awk
内,使用grep blame
获取更多信息,最后使用grep
来过滤输出。
$ git grep -n "TODO" | awk -F: '{system("git blame -f -L "$2","$2" "$1)}' |grep "The Author Name"
答案 1 :(得分:0)
不是一个确切的答案:
你可以查看你创建的提交(作者),以及diff引入新“TODO”的地方:
git log --author="My Name" -S TODO -p
第二种方式可能是:
TODO
标签的文件git blame
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 blame
会将此其他人的姓名称为作者。
反过来说:如果您修改了这样一行,您的名字将显示在git blame
的输出中。
如果未在TODO
行中指定作者姓名,则必须将文件内容与git中文件的历史记录交叉 - 以便能够匹配此行的作者。 IDE必须做同样的工作。
问题是,以一种精确的方式执行此操作很难(如果不是不可能):通常会在git的历史中重写提交(rebase,squash,...),尽管git尝试在有意义的情况下保留提交的作者,有时提交的“原始”作者可能会丢失。