在开发过程中,经常会遇到版本合并错误或者提交出现问题,而此时通常使用回退版本来解决问题。
在回退过程中,使用TortoiseGit小乌龟进行处理时,出现了报错:remote GitLab You are not allowed to force push code to a protected branch on this project。
原因很简单,就是因为向一个受保护的分支强制提交了代码。
使用Tortoise Git工具进行版本回退的方法,共需3步:
然后选择Hard方式进行reset。
这三种方式的区别是:
soft方式回退版本后,工作区和暂存区中的文件都不会受到影响,可以重新提交;
mixed方式回退版本后,工作区中的文件会保留,暂存区中的文件会被重置为回退版本之前的状态;
hard方式回退版本后,工作区和暂存区中的所有文件都会被重置为回退版本之前的状态。
因为我们这里需要强制回退,故需要选择Hard。
在Git中,
git push
命令用于将本地的提交推送到远程仓库。而--force
选项用于强制将提交推送到远程仓库,即使这样做可能会覆盖其他人的提交。
然而,force with lease
是一种更安全的方式来使用强制推送。它会检查远程仓库是否包含了你本地仓库中没有的提交。如果有其他人已经向远程仓库推送了新的提交,那么force with lease
会阻止你的推送,以避免覆盖其他人的工作。
换句话说,force with lease
只允许你推送更新,而不是覆盖其他人的提交。它会在推送之前检查远程仓库的状态,并确保你的本地仓库是基于最新的远程仓库更改的。
使用git push --force-with-lease
命令,你可以确保你的推送不会覆盖其他人的工作,同时也避免了一些潜在的问题。然而,这并不意味着force with lease
可以完全消除所有推送冲突的可能性,因此在使用时仍然需要小心谨慎。
此时,也就出现了上述报错。
出现了以上报错,说明我们正在尝试强制推送代码到一个受保护的分支,而没有权限执行这个操作。受保护的分支通常是指在远程仓库中设置了限制,阻止用户直接强制推送到该分支,以防止意外或恶意的更改。
解决思路也很简单,修改gitlab上的权限即可。
为了快速解决问题,这里就不在进行具体权限调整的操作了。直接将分支的保护关闭即可,比较粗暴!
重新输入需要保护的分支和赋予角色即可。
请注意:强制回退会删除之后的提交和更改,且无法恢复。所以在执行强制回退之前,请确保你不需要这些提交和更改,并且已经进行了适当的备份。
如果这篇文章对大家有所帮助,可以
点赞
+收藏
+关注
一下。
如果有什么需要改进的地方,请大家在评论区
留下您宝贵的意见和建议,我将非常欢迎。
月空MoonSky的主页 还有很多有趣的文章,欢迎小伙伴们前去点评。
最后,祝大家圣诞节快乐