如果检测到本地修改(包括未跟踪文件),如何防止git push?

有时我们团队中的某个人会做一个git push并打破构建,因为他的本地构建工作但他忘记在推送之前将所有本地修改和未跟踪文件提交给git.

我想防止这种情况……今天我把文档倒了一个小时左右,找不到内置的东西.

有没有人有任何解决方案?

最佳答案
你可以使用预推钩(自git 1.8.2).

你的预推钩可以检查git状态的退出代码,如果git status返回非零则返回0(OK推送),否则返回1(不允许推送).

git-status的手册页说:

If there is no path that is different between the index file and the current HEAD commit (i.e., there is nothing to commit by running git commit), the command exits with non-zero status.

使用git 1.8.2或更高版本创建的任何repo都将在.git / hooks目录中具有pre-push.sample,这是实现策略的有用起点.这里有更多使用预推钩的好例子:http://blog.ittybittyapps.com/blog/2013/09/03/git-pre-push/

请注意,钩子不会在上游仓库上运行.每个克隆都需要安装此挂钩,以强制执行您的策略. (钩子不是作为存储库的一部分克隆的.由于钩子是由git执行的,这种设计可以防止恶意钩子在开发人员的机器上运行.恶意代码应该转到Makefile或配置脚本,开发人员无需查看即可运行.)

转载注明原文:如果检测到本地修改(包括未跟踪文件),如何防止git push? - 代码日志