2017-03-08 59 views
0

我想從我的git項目外部運行子模塊更新。對於大多數命令(例如git status),我可以給git的--git-dir--work-tree參數,就像這樣:從不同目錄更新git子模塊

git --git-dir=/path/to/root/.git --work-tree=/path/to/root status

但是,在運行git --git-dir=/path/to/root/.git --work-tree=/path/to/root submodule update給出結果:fatal: $program_name cannot be used without a working tree.

我知道我可以改變成/path/to/root目錄,但是我想知道git是否有能力從git項目之外更新子模塊。

回答

0

我能夠做git --git-dir=<path-to-repo>\.git\modules\<submodule-name>

從主存儲庫外的子模塊中運行一個Git命令。這是因爲一個子模塊的git目錄位於.git\modules\<submodule-name>文件夾,而不是子模塊本身內(除非您創建子模塊位於第一個存儲庫的頂部,在這種情況下,您可以運行git submodule absorbgitdirs來解決此問題)。請注意,從新克隆中,.git\modules\<submodule-name>文件夾將不會存在,直到您第一次運行git submodule update

但是,當您嘗試使用主存儲庫的--git-dir運行git submodule update時,我遇到了同樣的問題。它沒有和沒有指定工作樹一起工作。我想知道這是一個錯誤,還是我們做錯了什麼。

然而,因爲第一個命令我聯繫的工作,你可以做到以下幾點:

git --git-dir=<path-to-repo>\.git\modules\<submodule-name> pull

將從主倉庫外面跑在你的子模塊的git拉。