Git子模块:如何指定特定的SHA?

32

我在我的项目中引用了git子模块,现在需要引用目标git仓库中的特定SHA。

# .gitmodules
[submodule "vendor/plugins/ssl_requirement"]
  path = vendor/plugins/ssl_requirement
  url = git://github.com/retr0h/ssl_requirement.git

我想要的SHA是bc96ad96407a72a60e0542cf3b0cecc6ff9e278e

1个回答

83

按照定义,子模块始终引用子项目中特定的SHA1。这个SHA1没有在.gitmodules文件中表达,而是作为包含子模块的树对象中的条目来表达。在git中设置这个值的方法是进入子模块,检出你想要的SHA1,然后返回到父仓库并提交你的更改,这将像更改文件一样显示。

所以在你的情况下,你可以这样做:

cd vendor/plugins/ssl_requirement
git checkout bc96ad96407a72a60e0542cf3b0cecc6ff9e278e
cd ..
git add ssl_requirement
# commit whenever you're ready

2
+1;这几乎就是我刚写的。请注意,如果在该提交之前从源获取的子模块,则可能需要在子模块中运行“git fetch”以获取它! - Cascabel

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