git – 恢复已删除的子模块

假设我有一个子模块dir1 / dir2(通过下面显示的步骤创建).删除后如何恢复子模块dir2?

git submodule update抱怨子模块不存在,git reset HEAD –hard恢复dir2但不恢复其内容.我按以下方式创建子模块:

mkdir dir1
cd dir1/
mkdir dir2

cd dir2/
touch 1.txt
git init
git add 1.txt
git commit -m "test"

cd ..
git init
git submodule add ./dir2/
git commit -m "adding submodule"

rm -r dir2
**** Now how do I restore dir2 and its contents? ****

最佳答案 在dir2(cd dir2; git init)中初始化git repo不会使dir2成为子模块.

它只是让dir2成为一个嵌套的repo,任何父repo都会忽略它.
删除dir2意味着您无法直接检索其内容.

你可以用git子模块添加/ another / path / dir2,dir2是dir1之外的repo.
然后就可以恢复dir2.

点赞