查看过去的git子模块提交

7
我正在处理一个有多个子模块的项目。昨天一切正常,应用程序可以运行等等。但在今天早上我运行 git submodules update 后,应用程序出现了错误。
$ git submodule update
Submodule path 'vendor/plugins/pluginA': checked out '49d5cba84dcffc061db69813162d103feef31ecb'
Submodule path 'vendor/plugins/pluginB': checked out '4f442f0448c1826252933d5af8fb33cd64d76f6e'

那么,在等待问题得到解决的过程中,我该如何检查子模块的先前版本呢?我看到了几个解决方案的参考,但没有看到具体提到这种情况的示例。

谢谢!

编辑:如果您能帮助我理解/修复这个问题(如何让pluginApluginB再次引用heads/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)

我通过手动检查子模块文件夹中的主分支解决了“奖励”问题。在子模块文件夹中执行 git checkout master,然后在超级项目目录中执行 git commit - Rob
请参见https://dev59.com/mXI-5IYBdhLWcg3wMFMf#1979194。 - VonC
2个回答

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

这意味着您已经进行了git pull,将文件和子模块合并到您的项目中。
在上游项目(您一直在拉取的项目)中,这些子模块的SHA1已更改。
您可以将它们改回去(在projectA中执行git checkout aref,然后cd ..并执行git add -A; git commit -m“advance submodule to aref”),如果需要,将这些子模块引用推回上游。
如果您需要知道子模块更新之前子模块的确切SHA1,请执行git show previousProjectSHA1previousProjectSHA1是主项目更新之前的先前SHA1)
您将看到类似于以下内容:
new file mode 160000
index 0000000..4c4c5a2

(4c4c5a2)是你需要用来还原它们到之前状态的子模块SHA1。

有关子模块性质的更多信息,请参见git submodule update SO问题。


0

对于第一种情况,您可以进入子模块目录,并使用 git checkout <ref> 命令检出您想要的任何版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接