想象一下在注释或类似的地方打错字:
- // Do thigns
+ // Do things
Run Code Online (Sandbox Code Playgroud)
现在,通过git blame @ -- file查看提交,该行最初添加在:
decafbad ... // Do things
Run Code Online (Sandbox Code Playgroud)
您可以通过运行以下命令手动修改该行git commit --fixup decafbad。
有没有办法自动执行此git blame @ -- file |grep thigns,git commit --fixup decafbad周期?
bash我写了一个小脚本来获得这个。此脚本假设您只进行了一次修复更改,因此它仅查看修改的第一个文件和更改的第一行:
file=$(git diff | sed -n "s/.* a\/\(.*\) \+\+\+.*/\1/p")
line_removed=$(git diff | tail -n +6 | sed -n "s/^-\(.*\)/\1/p")
hash=$(git blame HEAD $file | grep $line_removed | awk "{print \$1}")
git commit -a --fixup $hash
Run Code Online (Sandbox Code Playgroud)
如果您将此代码放入其中/usr/bin/git-auto-fixup(并使其可执行),那么您可以像这样调用它:git auto-fixup