2013-09-26 111 views
0

我有以下設置:我有一臺筆記本電腦(L),一臺中央機器(S服務器)和一臺固定PC(P)。Git與多個遙控器

P和S在同一個LAN中。 G上的每個分支都可以使用一個遠程跟蹤分支輕鬆交換git歸檔。好的。

現在問題出在L:它可以在LAN中。然後它通過IP使用直接連接到S.它也可以在局域網之外。然後,通過端口轉發隧道打開到另一臺計算機的SSH連接(R代表路由器)。然後在L上,您可以通過隧道訪問S.

我使用服務器的LAN-IP爲主站添加了一個遠程origin。現在我使用git remote add server.intern ssh://localhost:2222/...添加了第二個遠程,並正確地獲取了遠程分支remotes/server.intern/master。現在我嘗試使用git push server.intern通過隧道推動活動分支(主)。

我得到的錯誤:

fatal: You are pushing to remote 'server.intern', which is not the upstream of 
your current branch 'master', without telling me what to push 
to update which remote branch. 

我不知道該怎麼告訴混帳,我有師傅兩個上游分支。現在,我可以追加關鍵字主控,但如果有解決方案,它會很好。

感謝

+0

Git中不能有兩個上游分支。雖然Git允許您在存儲庫之間使用任意連接網絡,但它稍微適合製作樹狀分層結構。 「上游分支」功能可讓您定義樹中的主鏈接,並以較少的鍵入沿着這些鏈接進行推送/拉出。對於輔助鏈接,你必須明確。 – millimoose

回答

0

我甚至找到了一個更好的解決方案(感謝一個鏈路上的其他問題):我添加

[alias] 
    rpush = "!ssh -f -L 2222:server.intern:22 example.net sleep 5 ; sleep 1 ; git push server.intern" 
    rfetch = "!ssh -f -L 2222:server.intern:22 example.net sleep 5 ; sleep 1 ; git fetch server.intern" 

.git/cinfig文件。現在我不必再手動調用ssh,也不需要多個控制檯。現在我只需撥打git rpush master或我想推送的任何分支。

0

你不能在Git中有兩個上游,但你可以提供推送網址。如果你真的想要做的是保持備份或類似的東西。你可以爲你的出身做到這一點:

git remote set-url --push --add origin <origin-url> 
git remote set-url --push --add origin <alternate-url> 

每當你推到原點這將推動對<origin-url><alternate-url>兩者。這不是最好的設置,如果<alternate-url>也是作爲一個遙控器。它的遠程引用將不會更新,直到下一次獲取,但它已經足夠我多年的工作。