Git:如何恢复替换子模块的符号链接提交?

Git: How to revert a symlink commit which replaced a submodule?

我的主存储库中有一个名为 third-party 的子模块。由于这个模块太大,我在我的工作区中创建了一个 symlink to third-party 文件夹。 不幸的是,我已将此 symlink 作为 big fat merge 的一部分提交到我的分支中!基本上,我用 symlink.

替换了一个子模块

我曾尝试删除 link 和子模块更新,但没有帮助。

更多详情:

cat .gitmodules输出如下

[submodule "third-party"]
    path = third-party
    url = http://my-git-server/third-party.git

ls -la输出如下

drwxr-xr-x  3 user  admin  136 Jul 26 17:57 some-folder
drwxr-xr-x  3 user  admin  102 Jul 26 17:57 third-party -> /some/dead/path

我不知道如何从这种情况中恢复过来。任何帮助是极大的赞赏。

我尝试了多种方法,最终以下方法奏效了。欢迎更好的解决方法!

#delete the symlink
rm third-party 

#delete the symlink from git 
git rm third-party

#remove the submodule
cat /dev/null>.gitmodules

#commit the changes
git add .
git commit -m "Removing third-party as submodule"

#add the submodule again
git add submodule http://my-git-server/third-party.git third-party

#get the latest code from the submodule
git submodule update --remote

这解决了我的问题。虽然现在第三方指向的 commit hash 不一样,但是当我这样做时 git submodule update --remote,我得到了最新的代码!