Ste*_*ett 11 git git-diff git-log
我开始*.py diff=python了.git/info/attributes.所以Git知道功能界限在哪里.git diff -W甚至可以确保显示整个功能.
但有没有办法将git diff的输出限制为特定的函数(或多个函数)?
(没错,我猜它很糟糕......)
编辑这也将是有益的git log和git rev-list:不显示我的每一个承诺会修改views.py,告诉我犯这是修改某个功能.(是的,在一个理想的世界里,views.py不会是一个经常被8个不同的开发者修改的2000行庞然大物...)
好的,感谢Birei,我们有了解决方案。
在该答案中使用 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
Run Code Online (Sandbox Code Playgroud)
用法示例:grit funcdiff 009e75 8b7a14 ./staging.py write_uploaded
这也可以作为 git 别名添加到 ~/.gitconfig 中