我可以在Git子模块中取消填充吗?

时间:2011-03-21 23:15:50

标签: git git-submodules

一旦我跑了

git update submodule

我可以做任何事情让它回到init和update之前的状态吗?

3 个答案:

答案 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

找到您丢失的更改集后,您可以将其重新合并。

如果您的更改未提交,则无法恢复。