在使用git提交之前在另一个分支上自动创建分支
我有一个分支,比如说在使用git提交之前在另一个分支上自动创建分支,git,githooks,Git,Githooks,我有一个分支,比如说master。我没有masterpush限制。有没有办法让它说,如果在主机分支(或另一个分支)上意外执行了提交,则会自动创建一个新分支,并在其中进行提交 工作流示例: 克隆回购master分支 做了很多改变 git提交-am… 我想挂接到#3并创建一个新分支,如果此人正在master(或其他一些“标记的”分支)上提交 如果不可能,是否只在master上阻止提交?我可以通过创建预提交钩子来实现这一点: #!/bin/bash PROTECTEDBRANCH="master"
master
。我没有master
push限制。有没有办法让它说,如果在主机
分支(或另一个分支)上意外执行了提交,则会自动创建一个新分支,并在其中进行提交
工作流示例:
master
分支master
(或其他一些“标记的”分支)上提交
如果不可能,是否只在
master
上阻止提交?我可以通过创建预提交
钩子来实现这一点:
#!/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
;它的工作原理与预期一样。在提交时自动切换分支可能会让人恼火和困惑,尤其是对于新用户。如果需要,请考虑设置远程,这样就可以阻止推送到<代码>主< /代码>分支。GitHub使用“受保护的分支”对此提供了一些支持。如果您是自托管,则提供细粒度的访问控制;正如你所看到的,它是有效的。我会发现Git为我创建一个随机的分支名称要比Git抱怨我自己没有创建一个重要的名称更令人讨厌。所以我宁愿设置一个预提交钩子来检查和打印投诉并退出非零。