我正在开发一个有许多子模块的项目。昨天,一切都很好,应用正在运行等等。今天早上我跑git submodules update
后,我在应用程序中收到错误。
$ git submodule update
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb'
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e'
那么在等待问题得到解决的同时,如何查看以前版本的子模块呢?我已经看过几个对解决方案的引用而没有真正看到一个具体提到这种情况的例子。
谢谢!
编辑:奖励,如果您还可以帮助我理解/解决此问题(如何让pluginA
和pluginB
再次引用head / master):
$ 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 :(得分:2)
$ git submodule update
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb'
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e'
表示您已完成git pull,获取文件和子模块并将其合并到项目中 上游项目中的那些子模块的SHA1(你所拉动的那个)已经改变了。
您可以更改它们(git checkout aref
,projectA
,然后cd ..
和git add -A; git commit -m "advance submodule to aref"
),并根据需要将这些子模块ref推回上游
如果您需要在子模块更新之前知道您的子模块究竟是什么样的SHA1,那么在主项目更新之前,只需执行git show previousProjectSHA1
(previousProjectSHA1
作为之前的SHA1
你会看到类似的东西:
new file mode 160000
index 0000000..4c4c5a2
那个(4c4c5a2)是你需要将它们恢复到以前状态的子模块SHA1。
请参阅git submodule update SO问题以了解有关子模块性质的更多信息。
答案 1 :(得分:0)
对于第一种情况,您可以转到子模块目录,并使用git checkout <ref>