我正在寻找一种好的方法来防止开发人员使用Git强制推送主分支。我们使用GitHub托管远程存储库,所以pre-receive
钩子不是一个选项。还有其他解决方案可以轻松地为开发团队实施吗?
顺便说一下,我不想完全禁用强制推送。有时它是必要的恶。但是,不能在主分支上进行强制推送。
Github引入了受保护分支的概念。它可以在“设置”→“分支”→“受保护分支”下找到。
这种“保护”可以为任何分支启用,并适用于任何用户,包括管理员。
更多详细信息请参见此处 - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/
您无法在Github中防止这种情况发生。
您可以在本地建立一个中间仓库,在其中运行预接收挂钩以防止强制推送,并从此中间仓库向Github推送并阻止直接向Github推送的访问。是的,这并不优雅,并且您会失去许多Github的功能,但我没有看到其他方法。
编辑:刚刚看到这个答案,它说了同样的话并给出了另一种解决方法:GitHub-防止合作者使用push -f
对于GitHub而言,可以阻止强制推送,但你自己无法进行更改。你需要联系支持团队(support@github.com, https://github.com/contact)来在指定的存储库上进行更改。
git remote add upstream git@github.com:username/project.git
git remote set-url --push upstream no_push
是一种简单而好的方式来防止它
"让我用最简单的方式定义这些步骤:
好的,很好,我们现在进入了最后一步。您需要执行以下操作:
master
。develop
分支,请写develop
。git push origin main --force
请查看官方文档此处,了解有关分支保护策略的更多信息。