Git 如何使用一个遥控器推送到一个url并从另一个url拉取?
我已经创建了一个克隆的。如果我运行以下命令,我会看到我的本地repo被配置为使用我的克隆来获取/拉取,正如预期的那样Git 如何使用一个遥控器推送到一个url并从另一个url拉取?,git,github,Git,Github,我已经创建了一个克隆的。如果我运行以下命令,我会看到我的本地repo被配置为使用我的克隆来获取/拉取,正如预期的那样 $ git remote show origin * remote origin Fetch URL: https://github.com/domurtag/airbrake-grails.git Push URL: https://github.com/domurtag/airbrake-grails.git 我希望我的本地repo从主repo(我从中克隆的那一个
$ git remote show origin
* remote origin
Fetch URL: https://github.com/domurtag/airbrake-grails.git
Push URL: https://github.com/domurtag/airbrake-grails.git
我希望我的本地repo从主repo(我从中克隆的那一个)获取,并推送到我的克隆。我做的第一件事是将主回购添加为远程:
$ 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
假设这是相同的回购。因此,当您推送时,下一次获取的结果应该会改变——显然不会
最佳做法
处理您的情况的正确方法是将master
repo添加为一个额外的遥控器。同样,作为另一种最佳实践,我将这种回购称为上游回购
当你想从额外的回购中撤出时(上游
):
尝试将设置的url与pull和push一起使用:
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
介绍有助于三角工作流的设置
remote.pushdefault
:将更改推送到的远程设备。通过设置branch..pushremote
,可以覆盖特定分支
无论使用哪种设置,
git push
(没有其他参数)都将推送到您首选的远程位置,而不是分支的上游远程位置。有关详细信息,请参见。除非我弄错了,否则对于git远程设置url
,我使用upstream
和origin
来支持git本身,所以我从上游提取,同时在Github上从我的个人origin
推/拉。查看git邮件列表,了解最近关于三角形工作流的讨论。?这和我解释的不完全一样吗?可能是这两个方面的混合让我写了这篇评论。也许,如果答案是从你的“正确的方式…”段落开始的,并且只有在给出了正在寻找的命令和“不要那样做”的情绪之后。我想这取决于写作风格。对不起,我冒犯了你。我没有冒犯你——我只是感到困惑:)
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