假设我有一个子模块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 协议(protocol),任何父 repo 协议(protocol)都将忽略它。
删除dir2意味着您没有直接的方法来检索其内容。

您可能已经完成git submodule add /another/path/dir2,而dir2dir1之外的 repo 协议(protocol)。
这样就可以还原dir2了。

09-04 02:46
查看更多