I set *.py diff=python
in .git/info/attributes
。所以 Git 知道函数边界在哪里。 git diff -W 甚至可以确保显示整个函数。
但是有没有一种方法可以将 git diff 的输出限制为特定函数(或多个函数)?
(如果失败的话,我猜是 awk...)
编辑这对于git log
and git rev-list
:不要向我显示修改views.py的每个提交,而是向我显示修改其中某个函数的提交。 (是的,在理想的情况下,views.py 不会是一个 2000 行的庞然大物,经常被 8 个不同的开发人员修改......)
好的,感谢Birei https://stackoverflow.com/a/10513783/263268,我们有一个解决方案。
在该答案中使用 awk 脚本,并结合一些 bash:
~/scripts/grit:
#!/bin/bash
cmd=$1
shift 1
if [ "$cmd" = "" ]; then
git
# other commands not relevant to this question go here
elif [ $cmd = "funcdiff" ]; then
git show "$1:$3" | awk -f ~/scripts/getfunc.awk -v f=$4 > /tmp/.tmp1
git show "$2:$3" | awk -f ~/scripts/getfunc.awk -v f=$4 > /tmp/.tmp2
git diff -W --no-index /tmp/.tmp1 /tmp/.tmp2
else
git $cmd $@
fi
用法示例:grit funcdiff 009e75 8b7a14 ./staging.py write_uploaded
这也可以作为 git 别名添加到 ~/.gitconfig 中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)