2010-02-19 78 views
7

我正在一個項目中有一些子模塊。昨天,一切都很好,應用程序正在運行等等。今天早上我運行git submodules update後,在應用程序中收到錯誤。簽出過去的Git子模塊提交

$ git submodule update 
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb' 
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e' 

那麼如何在等待問題得到解決時檢查子模塊的先前版本?我沒有看到一個特別提到這種情況的例子,我已經看到了幾個解決方案的參考。

謝謝!

編輯:獎金,如果你也能幫助我瞭解/(又如何得到pluginApluginB引用頭/主)解決這個問題:

$ git submodule status 
49d5cba84dcffc061db69813162d103feef31ecb vendor/plugins/pluginA (49d5cba) 
4f442f0448c1826252933d5af8fb33cd64d76f6e vendor/plugins/pluginB (4f442f0) 
558fd1a762d63562689e58cac50283192fde74d5 vendor/plugins/pluginC (heads/master) 
4feb2c51148ebc4d4f80f9a64b9eabbfde5b13a3 vendor/plugins/pluginD (heads/master) 
19dce61e256b0fc3f05342cdd3e4d21a434c0b87 vendor/plugins/pluginE (heads/master) 
+0

我在子模塊的文件夾中通過手動檢查主設備發現了「獎勵」問題。在子模塊文件夾中的'git checkout master',然後在超級項目目錄中'git commit'。 – Rob 2010-02-19 19:31:40

+0

另請參閱http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC 2010-02-20 00:54:00

回答

2
$ git submodule update 
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb' 
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e' 

意味着你已經做了git的拉動,提取和合並文件和子模塊到您的項目一樣。
上游項目中的子模塊的SHA1(您正在提取的子模塊)已更改。

您可以改回(內projectAgit checkout aref,然後cd ..git add -A; git commit -m "advance submodule to aref"),並推(或沒有)的子模塊REF回上游,如果你想。

如果你需要知道什麼確切的SHA1是你在子模塊更新之前,只需要做一個git show previousProjectSHA1previousProjectSHA1是你的主要項目更新之前,以前的SHA1子模塊

你會看到類似這樣的:

new file mode 160000 
index 0000000..4c4c5a2 

那(4c4c5a2)是您需要將其恢復到之前的狀態的子模塊SHA1。

git submodule update所以要了解更多關於子模塊性質的問題。

0

同樣適用於第一種情況下,你去以子模塊目錄並籤什麼都版本你git checkout <ref>

相關問題