一旦我跑了
git update submodule
我可以做任何事情让它回到init和update之前的状态吗?
答案 0 :(得分:7)
您说要在 init 和更新之前返回,这可能是.gitmodules
中子模块仍然存在的情况,但是是一个空目录,未在.git/config
中注册。
假设您的子模块名为foo/bar
,那么您可以执行以下操作:
# Move the submodule out of your repository, just in case you have changes
# in there that you realise afterwards that you'd like to preserve:
mv foo/bar/ ~/backups/old-foo-bar/
# Recreate the submodule directory, but empty this time:
mkdir foo/bar/
# Remove all the config variables associated with that submodule:
git config --remove-section submodule.foo/bar
# Note that the submodule name is *without* the trailing slash
答案 1 :(得分:1)
尝试(使用git1.8.3,2013年4月22日)a:
git submodule deinit
(参见“How do I remove a Git submodule?”)
对于给定的子模块,这将从
submodule.<name>
删除整个.git/config
部分
您可能必须删除该子模块的工作树。
答案 2 :(得分:0)
如果您提交了更改,那么您应该能够检查reflog:
git reflog
找到您丢失的更改集后,您可以将其重新合并。
如果您的更改未提交,则无法恢复。