Git post commit:skip --amend和rebase

时间:2012-07-06 18:27:47

标签: git githooks post-commit-hook

我有一个post-commit钩子,可以完成ruby。它工作得很好,但在某些情况下,我想在执行rebase或者我提交--amend时跳过代码执行。

有人知道在这些情况下我是如何触发提交后挂钩或任何解决方法的吗?

Greg

2 个答案:

答案 0 :(得分:6)

重新定位时,rebase-merge文件夹中会出现一个名为.git的目录。这可能是在rebase期间禁用挂钩的方法(rebase btw的开头由pre-rebase挂钩指示。)

关于--amend,我无法帮助你。

答案 1 :(得分:0)

如果你想从钩子中检测git commit --amend,这是你最好的选择

的bash

if [[ $(ps -ocommand= -p $PPID) == "git commit --amend" ]]; then
    echo "always allow git commit --amend"
    exit 0
fi

红宝石

parent=`ps -ocommand= -p #{Process.ppid}`.chomp
if parent == "git commit --amend"
  # Always allow an amend
  puts "always allow git commit --amend"
  exit 0
end

git和shell别名在shell输出中展开,所以这也涵盖了这些情况

灵感:https://github.com/brigade/overcommit/issues/146