很多时候,在处理一件事情时,我会发现一些不相关的代码中的丑陋,修复它并单独提交.通常,有多个这样的提交,因为我后来发现类似的问题.
最后,我重新定义(重新排序和压缩),以便提交更有意义.有时候,我会遇到合并冲突,有时候生成的工作树与变基前的工作树不同.
即使没有冲突,也会出现这种差异吗?
也许不是,但人为错误是我们应该始终考虑的一个因素。
当差异发生时,有没有办法得到(巨大的闪烁)警告?
这应该做:
git diff ORIG_HEAD HEAD
Run Code Online (Sandbox Code Playgroud)
要自动执行此操作,请使用post-rewrite钩子(请参阅Git Hooks):
重写后
该钩子由重写提交的命令调用(git commit --amend、git-rebase;当前 git-filter-branch 不调用它!)。它的第一个参数表示调用它的命令:当前是 amend 或 rebase 之一。将来可能会传递更多与命令相关的参数。
然后在钩子脚本中.git/hooks/post-rewrite我们可以比较ORIG_HEAD和HEAD,如果不同则发出警告:
git diff ORIG_HEAD HEAD
Run Code Online (Sandbox Code Playgroud)
要使钩子全局可用,请考虑 config core.hooksPath,例如:
#!/bin/sh
diff_rebase() {
# echo "Old HEAD: $(git rev-parse ORIG_HEAD)"
# echo "New HEAD: $(git rev-parse HEAD)"
if ! git diff --quiet ORIG_HEAD HEAD; then
>&2 echo "NOTE: diff detected after rebase!"
else
echo "rebase well done"
fi
}
# bypass git amend
[ "$1" = "rebase" ] && diff_rebase
Run Code Online (Sandbox Code Playgroud)
然后将脚本保存为/usr/local/git-hooks/post-rewrite,并设置可执行权限。
注意:不幸的是,似乎有一个错误,即git rebase -i当使用自定义钩子目录时,交互式变基不会触发钩子。(我使用的是 git 2.9.2)
| 归档时间: |
|
| 查看次数: |
293 次 |
| 最近记录: |