2012-01-11 63 views
6

我在我的项目中引用了git子模块,现在需要在目标git repo中引用特定的SHA。Git子模块:指定一个特定的SHA?

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

我想要的SHA是bc96ad96407a72a60e0542cf3b0cecc6ff9e278e

回答

20

根据定义,子模块始终在子项目中引用特定的SHA1。该SHA1不在.gitmodules文件中表示,而是表示为包含子模块的树对象中的条目。你在git中设置的方式是cd进入子模块,检出你想要的SHA1,然后cd回到父回购库并提交你的更改,这将显示出来就像更改过的文件一样。

所以你的情况,你可以做的是

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

+1;这几乎就是我刚写的东西。请注意,如果子模块在提交之前最后从源获取,则可能需要在子模块中运行'git fetch'来获取它! – Cascabel 2012-01-11 02:07:52

+0

谢谢,非常有道理! – Zubin 2012-01-11 02:25:36