19.6 分支和里程碑的安全性
通过前面章节的探讨,会感觉到Git的使用真的是太方便、太灵活了,但是需要掌握的知识点和窍门也太多了。为了避免没有经验的用户在团队共享的Git版本库中误操作,就需要对版本库进行一些安全上的设置。本书第5篇Git服务器搭建的相关章节会具体介绍如何配置用户授权等版本库安全性设置。
实际上Git版本库本身也提供了一些安全机制避免对版本库的破坏。
用reflog记录对分支的操作历史。
默认创建的带工作区的版本库都会包含core.logallrefupdates为true的配置,这样在版本库中建立的每个分支都会创建对应的reflog。但是创建的裸版本库默认不包含这个设置,也就不会为每个分支设置reflog。如果团队的规模较小,可能因为分支误操作导致数据丢失,可以考虑为裸版本库添加core.logallrefupdates的相关配置。
关闭非快进式推送。
如果将配置receive.denyNonFastForwards设置为true,则禁止一切非快进式推送。但这个配置有些矫枉过正,更好的方法是搭建基于SSH协议的Git服务器,通过钩子脚本更灵活地进行配置。例如:允许来自某些用户的强制提交,而其他用户不能执行非快进式推送。
关闭分支删除功能。
如果将配置receive.denyDeletes设置为true,则禁止删除分支。同样更好的方法是通过架设基于SSH协议的Git服务器,配置分支删除的用户权限。