有时我们团队中的某个人会做一个git push并打破构建,因为他的本地构建工作但他忘记在推送之前将所有本地修改和未跟踪文件提交给git.
我想防止这种情况......今天我把文档倒了一个小时左右,找不到内置的东西.
有没有人有任何解决方案?
你可以使用pre-push钩子(因为git 1.8.2).
您的预推钩可以检查退出代码git status,如果git status返回非零则返回0(OK推送),否则返回1(不允许推送).
手册页git-status说:
如果索引文件和当前HEAD提交之间没有不同的路径(即,通过运行git commit没有提交任何内容),则该命令以非零状态退出.
使用git 1.8.2或更高版本创建的任何repo都将pre-push.sample在.git/hooks目录中,这是实现策略的有用起点.这里有更多使用pre-push钩子的好例子:http://blog.ittybittyapps.com/blog/2013/09/03/git-pre-push/
请注意,钩子不会在上游仓库上运行.每个克隆都需要安装此挂钩,以强制执行您的策略.(钩子不是作为存储库的一部分克隆的.由于钩子是由git执行的,这种设计可以防止恶意钩子在开发人员的机器上运行.恶意代码应该转到Makefile或配置脚本,开发人员无需查看即可运行.)