【发布时间】:2012-04-06 08:25:02
【问题描述】:
我如何告诉 git,虽然我想在某些分支上允许“git fetch”,但我不想在这些分支上允许“git push”。
换句话说,我有一些反映“当前工作”的分支,我想将它们推送到我的上游存储库。但是我有其他分支(包括 master),我打算在本地存储库的上下文中反映“其他工作”,我不想从这里踩到这些分支。
这是我的远程存储库,在其他情况下,我希望能够推送到它的所有分支。但不是来自这个特定的本地实例。
我认为这是可能的,因为 git remote show origin 有时告诉我,我已经为“git pull”配置了分支,但没有为“git push”配置分支。但是我对配置文件的理解不够好,无法手动创建这种效果,而且我对 git 的命令行语言也不太了解,无法在那里进行操作。
现在,我能做的最好的事情就是确保我的本地副本对于我想要保持原始状态的上游分支来说已经过时了。 (另外,在我的 git push 命令行中明确指定接收分支——指定我只想推送到与本地签出分支相对应的远程实例中——防止推送到不需要的分支。但我想消除这种复杂性.)
【问题讨论】:
-
看起来在接收存储库上设置 receive.denycurrentbranch 的分辨率。但我正在寻找对传输存储库的控制权。
-
您可以设置
push.default = upstream,然后git push将在没有其他参数的情况下仅推送本地签出分支。这看起来是git下一版本中的默认行为。 -
我需要特定版本的 git 才能使用它吗?我尝试了 git config --add push.default 上游但是当我尝试更改时,我得到:
$ git add READMEerror: Malformed value for push.default: upstreamerror: Must be one of nothing, matching, tracking or current. -
(无论如何,我不完全确定上游是做什么的,但看起来 push.default = tracking 对我来说是正确的:如果我没有在本地声明上游分支正在跟踪我的本地分支,我不能使用裸露的 'git push' 传播到它。)