我維護一小組我自己的git倉庫,並且有時會更改存儲「主」倉庫的機器或目錄。不幸的是,這會導致存儲庫的所有工作副本中斷。如何爲Git遠程URL使用環境變量
有沒有辦法在我的本地工作副本的「遠程」路徑中使用環境變量?
如果沒有,是否有一種簡單的方法可以欺騙Git(禁止使用擴展變量的蠻力sh腳本,在推送之前移除並將其重新分配給遠程位置等)擴展變量?
我維護一小組我自己的git倉庫,並且有時會更改存儲「主」倉庫的機器或目錄。不幸的是,這會導致存儲庫的所有工作副本中斷。如何爲Git遠程URL使用環境變量
有沒有辦法在我的本地工作副本的「遠程」路徑中使用環境變量?
如果沒有,是否有一種簡單的方法可以欺騙Git(禁止使用擴展變量的蠻力sh腳本,在推送之前移除並將其重新分配給遠程位置等)擴展變量?
您可以將配置變量傳遞給通過環境,這會讓你變得棘手,做你想做的事情。這隻有在你沒有設置GIT_CONFIG時纔有效。在你的shell環境的啓動腳本你可以設置類似:
GIT_ORIGIN_REMOTE=git://github.com/gitster/git.git
GIT_CONFIG_PARAMETERS="'remote.origin.url=${GIT_ORIGIN_REMOTE}'"
確保您已經移除的.git/config中的遠程源URL配置行。這將導致使用origin
遙控器的所有操作與git://github.com/gitster/git.git
一起操作。現在,您只需更改啓動環境腳本中的GIT_ORIGIN_REMOTE即可。注意GIT_CONFIG_PARAMETERS的格式,重要的是你的配置選項是單引號的。如果你想多個配置選項,從環境傳遞到Git的跟蹤形式:
GIT_CONFIG_PARAMETERS="'<config_variable>=<value>' '<config_variable>=<value>'"
你應該能夠使用這些信息來設置如何您認爲合適的環境。我沒有看到這個記錄,只是通過源代碼找到它,所以YMMV取決於你使用的Git版本。 Ref:Git Tokenizing Code & Git Parsing Code
謝謝詹姆斯。這非常巧妙。 – 2012-01-04 21:48:04
+1:正是我在找的東西! – Leo 2012-05-24 15:34:26
有趣的問題。所有這些存儲庫是否具有相同的「更改」遠程?如果是這樣,我可以想到一個便宜的伎倆。您可以在/etc/hosts
中爲遠程計算機的實際IP添加本地主機名條目,並使所有存儲庫指向本地名稱。更改/etc/hosts
中的條目將起作用。我不喜歡它,但它可能工作。
我的回購庫大部分存放在保管箱中,具有工作目錄的計算機可能與保管箱帳戶有關。如果我決定重新組織我的Dropbox帳戶中的一個或兩個父目錄,我希望能夠重置類似GIT_LOCAL_REPOSITORY_ROOT的東西 - 這將與我的本地回購中的遠程地址相關聯。在這種情況下,主機名實際上並沒有改變。 – 2012-01-04 17:51:32
哦,好吧。這將打破我的「解決方案」:) – 2012-01-04 17:52:32
我正在尋找一箇中央的方式來處理我的家庭服務器的變化的網址。而不是搞亂git-config中的變量,這對我來說是更合適的解決方案。謝謝! – meonlol 2016-04-27 20:25:08
你是什麼意思''遠程'我的本地工作副本'路徑? – manojlds 2012-01-04 17:48:19
$ git help remote – 2012-01-04 20:09:00
我同意使用'git remote set-url'是輕鬆重新配置遠程uri的正確方法,但是我繼續並根據環境給出瞭如何更改這些遠程uri的答案。 –
James
2012-01-04 21:23:33