如何使用一个遥控器推送到一个网址并从另一个网址拉出?

时间:2013-04-09 13:21:53

标签: git github

我创建了this repository的克隆。如果我运行以下命令,我会看到我的本地存储库配置为使用我的克隆来获取/拉取,如预期的那样。

$ 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回购应该用于提取,但我不确定这是什么。

如果相关,我已经展示了我.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/*

4 个答案:

答案 0 :(得分:11)

您正在寻找的命令是:

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。所以当你推动时,下一次获取的结果应该改变 - 这显然不会改变。

处理你的情况的正确方法是将主仓库添加为额外的远程(我称之为upstream),当你想要拉动它时,只需执行:

git fetch upstream
git merge upstream/master

答案 1 :(得分:4)

Git 1.8.3引入了有助于三角工作流程的设置。

remote.pushdefault :将更改推送到的远程。可以通过设置branch.<branch>.pushremote来覆盖特定分支。

使用任一设置,git push(没有其他参数)将推送到您的首选远程,而不是分支的上游远程。有关详细信息,请参阅1.8.3-rc2 announcement

答案 2 :(得分:1)

除非我弄错了,否则不存在--pull的{​​{1}}选项:https://git-scm.com/docs/git-remote#git-remote-emset-urlem

答案 3 :(得分:0)

尝试使用set-url with pull and 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