如何禁用Git的Push功能

196

我正在使用git进行开发工作,但我不想通过误操作推送代码。是否有方法可以禁用本地仓库的推送功能?一种方法是重命名分支,另一种方法是撤消推送,但我希望有更直接的方法。


20
请不要将此问题视为重复,因为标题的措辞比“原始”问题更容易在谷歌上找到。 - Jaakko
2个回答

395
以下命令将允许拉取操作,但推送操作将尝试使用URL no_push 并失败:
git remote set-url --push origin no_push

9
谢谢。如何禁用“仅推送某个分支”的功能? - user984260
17
我猜您可以为特定的分支设置远程分支: git config branch.<分支名称>.remote no_push。但如果该分支是本地开发分支,并具有自己的名称,那么真的是个问题吗?默认情况下 (git push 不带参数默认只推送本地和远程都存在的分支),它不会被推送,即使您确实将其推送,您也只是在远程上创建了一个新的分支,您随时可以删除它。 - Cascabel
3
谢谢!如果你除了 origin 之外还有一个上游仓库,那么你可以执行以下命令来确保无法推送到上游仓库:git remote set-url --push upstream no_push。在更改之前和之后使用 git remote -v 命令检查效果。 - Wlad
不错的简单技巧!谢谢伙计! - runningmark
1
@OZZIE 你可以使用相同的 git set-url 命令来允许再次推送 - 它将类似于 git set-url --push origin git@github.com:my-user/my-repo.git。如果你发出一个 git config --list 命令,原始设置很可能会显示为 remote.origin.url=<the thing you want> - Tim Barrass
显示剩余3条评论

7

根据远程配置的不同,您可以将其URL重置为使用只读Git协议而不是SSH或HTTPS。例如,对于GitHub上的项目,请执行以下操作:

git remote set-url <remote> git://github.com/Team/Project.git

其中<remote>通常是origin。使用git remote -v将会列出远程仓库列表;以https开头或者形如<user>@<host>:<path>的远程仓库通常可以进行推送。


对我没用!这也阻止了拉取操作 :( - Yassine ElBadaoui
1
@YassineElBadaoui 你可能需要在 set-url 后面添加 --push 来仅修改推送。但是,当你将来回到这个问题时,这个更近期的答案会使意图更清晰,我认为。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接