我试图从项目中删除一个子模块
尝试 rm -rf .git / modules / submodulePath
之后我遇到了问题
致命:不是git存储库
答案 0 :(得分:24)
这两个文件包含绝对子模块路径:
{submodule}/.git
.git/modules/{submodule}/config
因此,如果移动了repo,这两个文件中的绝对路径无效,并导致'not a git repository'错误。只需手动修复这些文件。
<强>更新强>
1。)从.gitmodules文件中删除相关部分。您可以使用以下命令:
git config -f .gitmodules --remove-section "submodule.submodule_name"
2.。).gitmodules改变阶段
git add .gitmodules
3.)从.git / config中删除相关部分。您可以使用以下命令:
git submodule deinit -f "submodule_name"
4.。)删除gitlink(没有尾部斜杠):
git rm --cached path_to_submodule
5.)清理.git / modules:
rm -rf .git/modules/path_to_submodule
6。)提交:
git commit -m "Removed submodule <name>"
7.删除现在未跟踪的子模块文件
rm -rf path_to_submodule
答案 1 :(得分:4)
我将git存储库移动到另一个文件夹后遇到此错误。当我查看时:
{submodule}/.git
我看到一行带有绝对路径,例如:
gitdir: /Users/ajx/Documents/repo/.git/modules/{submodule}
我将其更改为 relative 路径,例如:
gitdir: ../../.git/modules/{submodule}
我不确定为什么git会对绝对路径进行硬编码......
答案 2 :(得分:2)
您只需更新.git文件
即可nano {my submodule} / .git
使用正确的gitdir。
因为我认为你改变了文件夹的路径
答案 3 :(得分:1)
我刚刚遇到了这个问题。
在我的情况下,这是由于具有不同子模块的结帐分支所致。
由于某些原因,无法使用以下命令进行初始化:
git submodule update --recursive --init
在更新正常工作之前,我需要手动删除此文件/目录。
{submodule-path}/.git
.git/modules/{submodule}/config
答案 4 :(得分:0)
我遇到了这个问题,但是我的主存储库中没有.git/modules
目录。我有一个子模块“ build”,因此只需删除所有引用并将其重新初始化:
rm -rf .git/modules
rm -rf build
git submodule init
git submodule update