2010-05-26 169 views

回答

24

對於Git 1.6.4及更高版本,請將remote.<name>.pushurl設置爲git config

人們可能會使用它來拉動使用只讀https:協議,並推送使用基於SSH的協議。


origin的URL(remote.origin.url)是https://git.example.com/some/repo.git。它是隻讀的,但您可以通過基於ssh的「URL」[email protected]:some/repo.git進行寫入訪問。運行以下命令,以推動效果通過基於SSH協議:

git config remote.origin.pushurl [email protected]:some/repo.git 
+0

如何推送到say'開發「分支並從同一個遠程+裸Git倉庫中的'生產'分支拉來? – Ninad 2015-07-23 12:36:20

3

從我可以從git config man page聚集,上游回購是:

  • 默認原點都git pull/fetchgit pull

設置由branch.remote

  • 總是
  • 對於給出的分支,我沒有看到任何方式有兩個單獨的遠程默認

  • +0

    對於git v1.8.3.2,在嘗試git config remote ...和git remote set-url ...答案後,對於單個分支或整個分支,這似乎是真實的回購的副本。 – 2013-08-29 03:13:13

    +0

    將默認遠程設置重置爲當前分支的「origin」,並從匹配的分支名稱push push/pull到/ from git push --set-upstream origin hobs 2014-09-12 21:24:14

    71

    由於Git版本1.7.0,可以將此與:

    git remote set-url --push origin https://your.push.com/blah/ 
    
    +0

    比問題晚3年,但這應該是新接受的答案! – Kevlar 2013-09-25 20:47:34

    +1

    @Kevlar爲什麼?接受用於標記並不總是「最好」的答案,但是爲OP制定的答案(閱讀FAQ以獲取更多信息)。在提出問題的時候,答案是行不通的(甚至不存在),因爲git早於1.8。但是接受的答案確實爲OP做好了準備。你在三年後改變OP的決定的理由是什麼? – trejder 2013-12-06 10:26:53

    +7

    @trejder Stack Overflow也是一個爲未來訪問者提供有用答案的地方,他們可以通過搜索引擎或其他方式找到問題。現在最好的答案首先出現是很有價值的。我並不是說OP *必須*改變接受的答案,但是這樣做是完全合理的(並且在我看來是淨積極的)。 – amalloy 2015-08-20 00:30:21

    3

    這個工作在1.7.1及以上 -

    git remote set-url --push origin [email protected]:username/somerepo.git 
    
    +0

    與[user392887's answer](http://stackoverflow.com/a/17930364/41071)有什麼不同? – svick 2014-04-18 02:20:29

    +1

    我沒有評論或降低該答案的能力。在我的回答中需要注意兩點:1)我使用ssh。根據GitHub的說法,「我們強烈建議在與GitHub進行交互時使用SSH連接,SSH密鑰是識別可信計算機的一種方式,無需密碼。」 2)任何使用RHEL/CentOS 6的人都會默認使用git 1.7.1 - 1.7.1支持set-url,我只是用它。 – potto 2014-04-18 11:45:12

    18

    由於Git的1.8.3,您可以使用remote.pushDefault選項做你想要什麼(即具有不同的默認遙控器爲pullpush)。您可以像其他任何設置一樣來設置選項;例如,將其設置爲pushTarget遙控器,使用

    git config remote.pushDefault pushTarget 
    

    此選項將具有以下效果:

    • git pull將拉動從遠程指定由在相關分支部remote選項.git/config,而
    • git push將推送到由remote.pushDefault指定的遠程。

    請注意,您需要指定名稱遠程而不是URL。這使得該解決方案比涉及remote.<name>.pushurl的解決方案更靈活,因爲(例如)您仍然會爲兩個遙控器都追蹤分支。無論您是需要還是希望這種靈活性都取決於您。

    The release notes表示此選項專門用於支持三角形工作流程。

    +0

    奇怪:我以爲你只是向上遊推銷,而你不知道有多少下游回購正在從你身上拉下來:請參閱http://stackoverflow.com/a/2749166/6309 – VonC 2015-07-02 19:12:17

    +0

    @VonC啊,是的,我明白了爲什麼它很混亂。我通常會調用遠程我想*從*默認'上游',因爲......呃......它是在我的存儲庫上游,在這些拉動。但是選項是'pushDefault',而不是'pullDefault',所以我在例子中使用'downstream'作爲名稱。這可能是一個更好的主意,稱爲「defaultPushTarget」;) – MvanGeest 2015-07-02 19:28:30

    +0

    @MvanGeest我同意。但我確認你通常會推向「上游」。有一個(或很少和已知的)上游。但是可能會有很多(和未知的)下游。這就是DVCS(如「分佈式」)宇宙。 – VonC 2015-07-02 19:34:30