Git子模块添加:“一个git目录find本地”的问题
其实我正在学习如何使用git,包括“git submodule”子命令。 我已经build立了一个服务器,我可以托pipe,通过使用SSH推拉Git仓库。 我在这个服务器上创build了一个主要的git仓库“Travail”,我想把所有的项目都放在子模块中。
在我的Travail存储库中,我已经在tools/libft
添加了一个我的项目作为子模块:我能够开发这个子模块来推拉它。
但是,当我尝试添加其他子模块(从我的服务器上的fdf.git命名为fdf)时,出现以下问题:
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf A git directory for 'projets/fdf' is found locally with remote(s): origin ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git If you want to reuse this local git directory instead of cloning again from ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git use the '--force' option. If the local git directory is not the correct repo or you are unsure what this means choose another name with the '--name' option.
实际上没有子目录在projets/
我读了另一个线程,我应该使用git子模块同步或编辑.gitmodules文件,其中我的子模块的源存储库的URL可能已经改变。
但我的.gitmodules文件只包含有关我的第一个子模块(tools / libft)的信息,而不是projets / fdf:
[submodule "tools/libft"] path = tools/libft url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git
作为一名法国学生,我可能在我的英文文档中遗漏了一些东西,但是我search了一下,我真的不明白为什么我会遇到这个问题。
我会很高兴,如果我能得到一个解决scheme,但只是一个解释也会有所帮助。
我来到这个SO后,试图添加一个子模块与我最近删除的子模块相同的path。
这是最终为我工作( 本文帮助了很多 ):
如果你还没有运行git rm –-cached path_to_submodule
(没有结尾的斜线)以及rm -rf path_to_submodule
,那就这样做!
然后:
-
从
.gitmodules
文件中删除相关的行。 例如删除这些:[submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule
-
从.git / config中删除相关部分。 例如删除这些:
[submodule "path_to_submodule"] url = https://github.com/path_to_submodule
-
rm -rf .git/modules/path_to_submodule
那么,你终于可以:
git submodule add https://github.com/path_to_submodule
你可能已经从磁盘上删除了你的'projets/fdf'
,但你的Git仓库仍然有它。 使用git rm -rf projets/fdf
从Git中删除它,然后提交更改。 之后,您可以将此文件夹添加为子模块。
我试过jbmilgrom的解决scheme,特别是我试过git rm --cache
,那对我来说也不行,因为目录/子模块不在那里。 对我有效的是:
-
rm -rf .git/modules/blah
-
git submodule add git://path.to.new
我在git submodule
命令和rm
所有其他目录中执行了这个操作之后,把它们推到了主目录等等。目录不存在,并且没有caching的理由。 在.git/modules
发现这是错误所在。
如果您已经像我一样删除了子模块目录,请遵循jbmilgrom指令的其余部分。 关键是rm -rf .git/modules/path_to_submodule
但是请先行备份您的整个父目录repo目录 。
如果你只有一个子模块,只需删除.gitmodules