git:修复自动提交更改的行所属的问题

use*_*062 7 git

想象一下在注释或类似的地方打错字:

- // 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 thignsgit commit --fixup decafbad周期?

Chr*_*aes 1

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