我有一个git子模块(RestKit),我已经添加到我的repo。
我不小心更改了里面的一些文件,我想回到原始版本。为了做到这一点,我试着逃跑
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
不恢复本地修改的文件。
如何重置该子模块的内容?
从Git 2.14(2017年Q3)开始,你不需要进入每个子模块来进行Git重置(就像Git子模块foreach Git重置一样——很难)
这是因为git重置本身现在知道如何递归地进入子模块。
参见Stefan Beller (stefanbeller)的commit 35b96d1(2017年4月21日),和commit f2d4899, commit 823bab0, commit cd279e2(2017年4月18日)。
(由Junio C Hamano合并- gitster -在commit 5f074ca, 2017年5月29日)
内置/重置:添加——递归子模块开关
Git-reset是另一个工作树操作器,应该教授关于子模块的知识。
当用户使用git-reset和请求递归到子模块时,
方法中记录的对象名称将重置子模块
超级工程,分离人头。
警告:区别:
Git重置-硬-递归子模块和
Git子模块foreach Git重置——很难
前者也会重置你的主父repo工作树,因为后者只会重置子模块的工作树。
所以请谨慎使用。