在使用git提交之前,如果在另一个分支上自动创建分支

时间:2018-04-10 16:35:23

标签: git githooks

我有一个分支,让我们说master。我没有限制master推送。有没有办法让它说如果在master分支(或另一个分支)上意外地完成了一个提交,那么自动创建一个新分支并且提交在那里?

示例工作流程:

  1. 克隆回购master分支。
  2. 进行了大量更改
  3. git commit -am ...
  4. 如果此人正在master(或其他一些"标记为"分支),我想挂钩#3并创建一个新分支。

    如果不可能,是否只会在master阻止提交?

1 个答案:

答案 0 :(得分:1)

我能够通过创建pre-commit钩子来实现这一点:

#!/bin/bash
PROTECTEDBRANCH="master"

CURRENTBRANCH=$(git rev-parse --abbrev-ref HEAD)

if [ "$PROTECTEDBRANCH" == "$CURRENTBRANCH" ]; then
    RANDOMBRANCH=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)

    git checkout -b $RANDOMBRANCH
fi

我将其保存在.git/hooks/pre-commit;它按预期工作。