作为管理者,在远端将master分支设为保护分支,可以从根源上杜绝直接推送到master的问题。dev分支同理。
作为开发者,在本地的git hook中加配置可以做到在commit和push操作时做对应的检查
禁止在master分支上Commit
在master分支上Commit时提示
禁止推送到master分支
推送到master分支时提示
为什么需要循环读取?因为git一次可以push多个分支
推送时如果commit消息包含WIP则禁止推送
这时候,你可能会发现,你每一次clone项目之后都需要手动把commit和push的hook文件丢在.git/hooks
目录下,是不是觉得不方便?别着急,有办法,我们可以让所有项目的hook操作统一到一个自定义目录中。
这样就可以实现统一管理所有项目的hooks操作了
core.hookspath配置需要git版本在v2.9以上才行
然后,你会觉得全局统一管理也太霸道了吧,比如说,公司的项目可以统一一套hooks操作,但是我不想把这一套hooks应用于个人github的项目啊。也就是说你需要在不同的目录下面执行不同的hooks操作,那么该怎么办呢?还是有办法:git配置是可以根据不同目录使用不同配置的
比如我只想统一管理~/yy
目录下的所有项目,那就修改~/.gitconfig
文件加入以下内容
然后增加一个~/.gitconfig-yy
文件,在这个文件中加入yy目录下面的独有配置
参考:
https://stackoverflow.com/questions/42455506/in-pre-push-hook-get-git-push-command-full-content
https://www.geek-share.com/detail/2776108340.html
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=38qhpnqeksg0g