Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有.gitmodules文件的git子模块?_Git_Git Submodules - Fatal编程技术网

没有.gitmodules文件的git子模块?

没有.gitmodules文件的git子模块?,git,git-submodules,Git,Git Submodules,切换分支(使用SourceTree),我会收到如下错误消息 fatal: No url found for submodule path '...' in .gitmodules 整个项目中没有.gitmodules文件 我应该看哪里 SourceTree在切换分支时点击以下命令: git --no-optional-locks -c core.quotepath=false submodule update --init 当我输入git子模块时,输出为: # git submodule

切换分支(使用SourceTree),我会收到如下错误消息

fatal: No url found for submodule path '...' in .gitmodules
整个项目中没有
.gitmodules
文件

我应该看哪里

SourceTree在切换分支时点击以下命令:

git --no-optional-locks -c core.quotepath=false submodule update --init 
当我输入git子模块时,输出为:

# git submodule                        
fatal: no submodule mapping found in .gitmodules for path '...'

文件夹
是空的。

这里的子模块已损坏。(或者半个子模块?没有指令的子模块?我们不清楚该怎么称呼它,因为我们可以说gitlink的一半是“gitlink”,这至少是一个可搜索的术语。)

Git中的子模块是对另一个Git存储库的引用。为了使用子模块,您必须已经拥有另一个Git存储库。一般来说,为了创建一个Git存储库,我们通常使用
Git clone
来复制一些其他现有的存储库。因此,通常情况下,子模块附带Git运行
Git clone
所需的必要指令。这些说明进入
.gitmodules
文件

如果缺少
.gitmodules
文件(如本例中所示),则表示缺少设置子模块的说明。这取决于您是通过添加指令来修复它,还是通过从下一次提交中删除格式错误的子模块来修复它

移除半成型的子模块更容易。注意,但您所要做的就是使用
git-rm
,然后提交。由于缺少克隆指令,此新提交将不再引用无法克隆的子模块。后续的新提交(基于此提交构建)不会提及子模块,也不会提及子模块(仍然不存在)

请注意,所有现有提交仍处于中断状态。对此,您唯一能做的就是删除(或替换)任何现有的已断开的提交,因为不能修改任何现有的提交。尝试修复或删除现有提交通常不是一个好主意,因为其他人可能依赖于它们。如果您将另一个Git存储库克隆到位,那么像这样的半个子模块/断开的子模块可以作为常规(非断开的)子模块使用

要通过修复子模块来修复问题,请将适当的配置放入新的
.gitmodules
文件和
git add
git commit
文件中。当然,实际这样做的问题是,你需要知道说明是什么。它们中的一些可以从损坏的子模块中清除,因为
.gitmodules
文件中的信息分为几个部分:一部分是路径,它只是mode-
160000
git ls files
条目的名称(同样,请参见VonC的答案)。但另一部分是应该克隆的存储库的URL,谁知道可能是什么呢



1在理论上,无论谁拥有你克隆的哪个存储库,都应该知道,或者,他们应该知道谁知道,或者知道谁知道谁知道,等等。但在实践中,你会得到很多你这里的是一个坏了的子模块。(或者半个子模块?没有指令的子模块?我们不清楚该怎么称呼它,因为我们可以说gitlink的一半是“gitlink”,这至少是一个可搜索的术语。)

Git中的子模块是对另一个Git存储库的引用。为了使用子模块,您必须已经拥有另一个Git存储库。一般来说,为了创建一个Git存储库,我们通常使用
Git clone
来复制一些其他现有的存储库。因此,通常情况下,子模块附带Git运行
Git clone
所需的必要指令。这些说明进入
.gitmodules
文件

如果缺少
.gitmodules
文件(如本例中所示),则表示缺少设置子模块的说明。这取决于您是通过添加指令来修复它,还是通过从下一次提交中删除格式错误的子模块来修复它

移除半成型的子模块更容易。注意,但您所要做的就是使用
git-rm
,然后提交。由于缺少克隆指令,此新提交将不再引用无法克隆的子模块。后续的新提交(基于此提交构建)不会提及子模块,也不会提及子模块(仍然不存在)

请注意,所有现有提交仍处于中断状态。对此,您唯一能做的就是删除(或替换)任何现有的已断开的提交,因为不能修改任何现有的提交。尝试修复或删除现有提交通常不是一个好主意,因为其他人可能依赖于它们。如果您将另一个Git存储库克隆到位,那么像这样的半个子模块/断开的子模块可以作为常规(非断开的)子模块使用

要通过修复子模块来修复问题,请将适当的配置放入新的
.gitmodules
文件和
git add
git commit
文件中。当然,实际这样做的问题是,你需要知道说明是什么。它们中的一些可以从损坏的子模块中清除,因为
.gitmodules
文件中的信息分为几个部分:一部分是路径,它只是mode-
160000
git ls files
条目的名称(同样,请参见VonC的答案)。但另一部分是应该克隆的存储库的URL,谁知道可能是什么呢


1理论上,无论谁拥有你克隆的哪个存储库,谁都应该知道,或者,他们应该知道谁知道,或者知道谁知道谁知道,等等。但实际上,你要做的事情很多