如何在SCM-Manager中阻止git_playground仓库所有分支的强制推送?
解决SCM-Manager中Git仓库禁止强制推送的问题
我来帮你搞定这个禁止强制推送的配置问题!你之前遇到的克隆失败,是因为把配置放错了节点导致的,下面给你详细的正确操作步骤:
一、为什么之前的配置会导致克隆失败?
你把receive.denyNonFastForwards = true放在了[core]节点下,这是错误的——这个配置项属于[receive]专属节点,放在core里会让Git识别为无效的仓库配置,进而导致仓库状态异常,自然就无法克隆了。
二、正确的配置方法
方法1:手动修改服务器端仓库的Git配置
直接修改目标仓库的Git配置文件,步骤如下:
- 登录到Git服务器,找到
git_playground仓库的存储目录,进入仓库内的.git文件夹 - 编辑
config文件,添加或修改[receive]节点:[receive] denyNonFastForwards = true - 保存文件即可,这个配置只会限制推送操作,不会影响仓库的克隆功能。
方法2:通过SCM-Manager可视化界面配置(更推荐)
既然你用的是SCM-Manager,直接用后台界面配置更简单,还能避免手动编辑出错:
- 登录SCM-Manager后台,找到
git_playground仓库,进入仓库的设置页面 - 在设置中找到「Git」相关的配置板块,找到名为
Deny Non-Fast-Forwards(或中文翻译「拒绝非快进推送」)的选项 - 勾选该选项并保存设置,SCM-Manager会自动帮你在仓库的Git配置中添加正确的
receive.denyNonFastForwards配置
三、验证配置是否生效
配置完成后,你可以在本地测试强制推送:
git push -f origin <你的分支名>
如果配置生效,服务器会返回类似如下的错误提示,说明强制推送已被阻止:
remote: error: denying non-fast-forward refs/heads/<分支名> (you should pull first)
To <仓库地址>
! [remote rejected] <分支名> -> <分支名> (non-fast-forward update denied)
error: failed to push some refs to '<仓库地址>'
内容的提问来源于stack exchange,提问作者soundararajan.c
相关产品推荐
相关产品推荐

