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

Auto-create branch if on another branch prior to committing with git

我有一个分支,假设 master。我没有 master 推送限制。有没有办法让它说,如果在 master 分支(或另一个分支)上不小心进行了提交,那么会自动创建一个新分支并且提交在那里?

示例工作流程:

  1. 克隆存储库 master 分支。
  2. 做了很多改变
  3. 是否git commit -am ...

如果此人正在提交 master(或其他 "marked" 分支),我想连接到 #3 并创建一个新分支。

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

我可以通过创建一个 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;它按预期工作。