我有一个git子模块(RestKit),我已经将它添加到我的存储库中。
我不小心更改了其中的一些文件,我想返回到源版本。为了做到这一点,我试着跑
Mac:app-ios user$ git submodule update RestKit
但正如你在这里看到的,这并不起作用,因为它仍然是“修改的内容”:
Mac:app-ios user$ git status
...
# modified: RestKit (modified content)
甚至
Mac:app-ios user$ git submodule update -f RestKit
不还原本地修改的文件。
如何重置该子模块的内容?
发布于 2012-06-06 07:57:21
移到子模块的目录中,然后执行git reset --hard
命令,将所有修改过的文件重置为上次提交的状态。请注意,这将丢弃所有未提交的更改。
发布于 2013-07-26 09:58:29
如果您希望对所有子模块执行此操作,而不必更改目录,则可以执行
git submodule foreach git reset --hard
您还可以使用递归标志将其应用于所有子模块:
git submodule foreach --recursive git reset --hard
发布于 2014-12-11 13:11:07
一种比之前所有答案更安全的方法:
git submodule deinit -f .
git submodule update --init
第一个命令完全“解除”所有子模块的绑定,第二个命令则对它们进行新的签出。
它比其他方法需要更长的时间,但无论你的子模块处于什么状态,它都可以工作。
https://stackoverflow.com/questions/10906554
复制相似问题