有没有一种好方法可以使用git识别历史记录中每个修订版中的所有修改过的函数?我尝试过使用-p开关,但它似乎与svn的show-c-function参数的工作方式不同。
我的假设是我想要使用“git diff HEAD~i HEAD~i-1 -p”来增加i的值。我是否遗漏了一些参数,这些参数有助于识别差异对已修改函数的最佳猜测?
答案 0 :(得分:5)
git diff
*
git diff | \
grep -E '^(@@)' | \
grep "(" | \
sed 's/@@.*@@//' | \
sed 's/(.*//' | \
awk -F " " '{print $NF}' | \
uniq
......它的作用是......
- 挑选当前差异,
- 接下来只挑选带有“hunk-headers”的行,
- 接下来只选择带有左括号的行(可能包含函数名称),
- next忽略了hunk标题,
- next忽略左括号后面的文字
- 接下来只选择前括号前面的单词,
- 最后忽略列表中同一个单词的多次出现。
醇>
瞧!你有一份当前git diff
正在修改的功能列表。
*在运行bash的Ubuntu 16.04上使用git version 2.7.4
验证。
答案 1 :(得分:3)
这是对我认为你想要的东西的快速而肮脏的尝试。它会显示git log
以显示所有修订,-p
将diff包含在日志中,grep
仅包含包含提交ID和hunk标头的行,并使用{sed
1}}过滤掉行号,只留下Git在hunk标题后写的函数名的猜测。
git log -p | grep -E '^(commit|@@)' | sed 's/@@.*@@//'