[英]How can I push to one url and pull from another using one remote?
我已经创建了这个存储库的克隆。 如果我运行以下命令,我会看到我的本地存储库配置为按预期使用我的克隆来获取/拉取。
$ git remote show origin
* remote origin
Fetch URL: https://github.com/domurtag/airbrake-grails.git
Push URL: https://github.com/domurtag/airbrake-grails.git
我希望我的本地存储库改为从主存储库(我从中克隆的那个)获取并推送到我的克隆。 我做的第一件事是将主存储库添加为远程:
$ git remote add cavneb https://github.com/cavneb/airbrake-grails.git
如果我再次运行git remote show origin
我会看到相同的输出,所以显然我需要做一些其他的事情来表明应该使用cavneb
repo 来获取,但我不确定这是什么。
如果相关,我已经在下面显示了我的.git/config
的内容:
[core]
repositoryformatversion = 0
filemode = true
logallrefupdates = true
[remote "origin"]
url = https://github.com/domurtag/airbrake-grails.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "cavneb"]
url = https://github.com/cavneb/airbrake-grails.git
fetch = +refs/heads/*:refs/remotes/cavneb/*
您正在寻找的命令是:
git remote set-url origin https://github.com/cavneb/airbrake-grails.git
git remote set-url origin --push https://github.com/domurtag/airbrake-grails.git
但我强烈建议不要这样做。
即使我不完全确定,对于上述行为, git
会/可能会感到困惑。
像上面那样完成后, git
假定这是同一个repo。 因此,当您推送时,下一次获取的结果应该会改变——这显然不会。
处理您的情况的正确方法是将master
库添加为额外的远程存储库。 同样,作为另一个最佳实践,我会将此 repo 称为upstream
。
当你想从那个额外的 repo( upstream
) 中提取时:
git fetch upstream
git merge upstream/master
Git 1.8.3引入了有助于三角工作流的设置。
remote.pushdefault
:要将更改推remote.pushdefault
的遥控器。 可以通过设置branch.<branch>.pushremote
在特定分支上覆盖。
无论使用哪种设置, git push
(没有进一步的参数)将推送到您首选的远程,而不是分支的上游远程。 有关详细信息,请参阅1.8.3-rc2 公告。
除非我弄错了,否则git remote set-url
没有--pull
选项之类的东西: https : --pull
尝试使用带有拉和推的 set-url:
git remote set-url --pull origin https://github.com/domurtag/airbrake-grails.git
git remote set-url --push origin https://github.com/cavneb/airbrake-grails.git
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.