不同的默认远程(跟踪分支)为git拉和git推
有没有办法build立一个git仓库,所以git pull
拉默认为一个远程和git push
默认到另一个? 我知道我可以通过更改.git/config
分支部分中的remote
variables的值来设置,但是如何分别对每个方向进行设置?
对于Git 1.6.4及更高版本,使用git config设置remote.<name>.pushurl
。
有人可能会使用这种方式来使用只读的https:
协议,并使用基于ssh的协议进行推送。
说origin
的url( remote.origin.url
)是https://git.example.com/some/repo.git
。 它是只读的,但您可以通过基于ssh的“URL” git@git.example.com:some/repo.git
进行写入访问。 运行以下命令来推送基于ssh的协议:
git config remote.origin.pushurl git@git.example.com:some/repo.git
由于Git 1.7.0版本,你可以设置:
git remote set-url --push origin https://your.push.com/blah/
从Git 1.8.3开始,你可以使用remote.pushDefault
选项来完成你想要的function(比如,对于pull
和push
有不同的默认遥控器)。 您可以像其他任何设置一样来设置选项; 例如,将其设置为pushTarget
远程,使用
git config remote.pushDefault pushTarget
该选项将具有以下效果:
-
git pull
将从.git/config
中的相关分支部分中的remote
选项指定的remote
拉出 -
git push
会推送到remote.pushDefault
指定的远程。
请注意,您需要指定远程的名称 ,而不是URL。 这使得这个解决scheme比涉及remote.<name>.pushurl
的解决scheme更加灵活,因为(例如)你仍然会为两个遥控器都有追踪分支。 无论您是需要还是希望这种灵活性都取决于您。
发行说明说这个选项是专门为了支持三angular形工作stream而添加的。
从我可以从gitconfiguration手册页收集,上游回购是:
- 默认来源
- 由
branch.remote
设置 - 总是为
git pull/fetch
和git pull
对于一个给定的分支,我没有看到任何方式默认有两个单独的远程。
这在1.7.1及以上的作品 –
git remote set-url --push origin git@github.com:username/somerepo.git