2013-04-09 76 views
4

我創建了一個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/* 

回答

10

你正在尋找的命令是:

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假定這是相同的回購。所以當你推動時,下一次獲取的結果應該改變 - 顯然不會。

處理您的情況的正確方法是向主回購添加爲一個額外的遠程(我稱之爲upstream),當你想拉它,只是做:

git fetch upstream 
git merge upstream/master 
+0

我使用'上游'和'起源'爲我的未成年人支持git本身,所以我從上游取,同時從我的個人'起源'在Github上推/拉。在git郵件列表中查看關於三角形工作流的最新討論。 – 2013-04-09 15:26:11

+0

?這與我所解釋的不完全一樣嗎? – Chronial 2013-04-09 15:43:08

+0

這是兩方面的混合,可能使我寫評論。也許如果答案是以你的「正確的方式」開始的,並且只有在命令被尋找和'不這樣做'的情緒之後。我想這取決於寫作風格。對不起,任何冒犯。 – 2013-04-10 12:04:30

0

嘗試使用設置網址與推拉:

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 
4

Git 1.8.3介紹設置與三角形的工作流程幫助。

remote.pushdefault:遠程推送改變。通過設置branch.<branch>.pushremote可以在特定分支上重寫。

使用任一設置,git push(沒有更多參數)將推送到您的首選遠程設備,而不是分支的上游遠程設備。詳細信息請參見1.8.3-rc2 announcement