2011-05-18 37 views
18

我以我的機器上的用戶A登錄,但我的回購可以通過我從服務器上的用戶名B訪問我從。 .gitmodules文件有url = ssh://domain.com/abc/def.gitgit子模塊更新與其他用戶

如何配置git使用用戶名B而不是A當我做git submodule update

回答

28

我假設子模塊已經初始化,所以git config --list | grep ^submodule顯示類似submodule.my-submodule.url=ssh://domain.com/abc/def.git的東西。

如果您還沒有第一次運行git submodule update,那麼您可以更改該配置選項,例如,搭配:

git config submodule.my-submodule.url ssh://[email protected]/abc/def.git 

在另一方面,如果子模塊已經被更新一次,然後origin輔助模塊將被設置到任何指定的配置選項。在這種情況下,你需要這樣做:

cd my-submodule 
git config remote.origin.url ssh://[email protected]/abc/def.git 

這只是有點令人困惑,恐怕,但子模塊非常靈活。我試圖在a blog post中解釋一些這些細節。

1

簡短的回答是「請檢查您是否可以使用相對路徑的子模塊」

的細節是, 我們有正在使用由多個應用子模塊。我們已將子模塊保存在相同的回購站中。

的結構是這樣的, 回購

 
|-app1 
|-app2 
|-submod 

當我們克隆應用程序應用程序/ git的/ config中得到URL中包含「[email protected]」 在的.gitmodules當前用戶我們給網址設置爲'../submod'的應用程序 通過這種方式,當我們做'submodule init'時,git會根據我們在.gitmodules中給出的相對url生成子模塊的絕對url。

10

儘管上述解決方案有效,但我找到了更適合我需求的不同解決方案,也許是最初的請求者。我想要一種方法來爲遠程服務器上的所有git操作指定默認用戶名,而不必修改每個項目的git配置。這個解決方案與git根本沒有任何關係,但是ssh。

這些線路只需添加到您的〜/ .ssh /配置:

Host domain.com 
User B 

(替換爲您的git服務器的域domain.com)。現在,即使你已經登錄到本地計算機作爲用戶A,當連接到服務器時,SSH將使用B作爲用戶名。

現在,您可以運行git submodule update,而不必在git配置中添加用戶名。

+0

這是一個更好的解決方案,特別是如果您有一個具有多個子模塊的項目。謝謝! – MaciekS 2017-10-06 14:06:19