首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将我的更改恢复到git子模块?

如何将我的更改恢复到git子模块?
EN

Stack Overflow用户
提问于 2012-06-06 07:52:44
回答 11查看 224K关注 0票数 337

我有一个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 

不还原本地修改的文件。

如何重置该子模块的内容?

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2012-06-06 07:57:21

移到子模块的目录中,然后执行git reset --hard命令,将所有修改过的文件重置为上次提交的状态。请注意,这将丢弃所有未提交的更改。

票数 253
EN

Stack Overflow用户

发布于 2013-07-26 09:58:29

如果您希望对所有子模块执行此操作,而不必更改目录,则可以执行

git submodule foreach git reset --hard

您还可以使用递归标志将其应用于所有子模块:

git submodule foreach --recursive git reset --hard
票数 329
EN

Stack Overflow用户

发布于 2014-12-11 13:11:07

一种比之前所有答案更安全的方法:

git submodule deinit -f .
git submodule update --init

第一个命令完全“解除”所有子模块的绑定,第二个命令则对它们进行新的签出。

它比其他方法需要更长的时间,但无论你的子模块处于什么状态,它都可以工作。

票数 283
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10906554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档