2016-08-02 75 views
1

在我們的團隊中,我們有兩個存儲庫,直到現在。一個是開發,另一個是生產。在gitconfig中配置條件推送

因此,我們將gitconfig全局文件配置爲默認提取,並從生產和默認推送到開發。

現在我們已經介紹了第三個名爲Common的存儲庫。從「Common」克隆的任何人都應該將默認推送配置爲「Common」。由於我們已經在全局配置'Development'作爲默認推送庫,所以當它被克隆時,默認推送指向'Development',即使在'Common'倉庫中也是如此。

我該如何在gitconfig global下面做一些類似的東西?

if (cloned repository from Production) 
then 
    default push is Development 

if (cloned repository from Common) 
then 
    default push is Common 
+1

一種方法是在'Common' repo的* local * config中設置'remote.pushDefault = Common'變量,因爲這會[覆蓋](https://git-scm.com/book/ en/v2/Customizing-Git-Git-Configuration#_git_config)在全局配置中設置的值。 –

+0

@EnricoCampidoglio:現在我有兩個默認的推送路徑,您推薦的更改後。 –

+0

@SSHedge您能否詳細說明一下?你運行了什麼命令?你的'[remote]'config部分是怎麼樣的? –

回答

1

假設你的全局配置文件包含了這樣的事情:

[remote "origin"] 
pushurl = http://url/to/development 

這裏實現你想要的一種方式:

  1. Common存儲庫點定義一個新的遠程到與origin相同的網址:

    git remote add common http://url/to/common 
    
  2. 設置remote.pushDefault變量本地配置文件中common

    git config remote.pushDefault common 
    

remote.pushDefault設置告訴GIT中使用指定的代替origin遠程定義的URL推。

下面是來自documentation

remote.pushDefault
默認推向遠端。覆蓋所有分支的 branch.<name>.remote,並且針對特定分支被 branch.<name>.pushRemote覆蓋。

在這種情況下,爲origin推URL全局配置文件中定義,但Common庫將使用在自己的遙控器,名爲common定義推URL。

+0

如果我做了這個改變,那麼這個設置將保留直到我從Common中移除克隆的回購。如果我從Common中克隆新的repo,那麼我需要執行這些步驟。不是嗎? –

+0

正確 - 回購的本地配置文件[不能遠程共享](http://stackoverflow.com/a/6548056/26396)。但我想你已經有一種方法來分享全球'remote.origin.pushurl'設置。這些本地設置可以以類似的方式共享。 –

+0

謝謝恩里科。這樣做的工作。 –