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
,我得到了最新的代码!
我的主存储库中有一个名为 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
,我得到了最新的代码!