我是git新手,如果能帮助我添加子模块,我将不胜感激。我已经收到了两个共享一些公共代码的项目。共享代码刚刚被复制到两个项目中。我为通用代码创建了一个单独的git代码库,并将其从项目中删除,并计划将其添加为git
子模块。
我使用了git子模块add的path选项来指定文件夹:
git submodule add url_to_repo projectfolder
但随后得到了错误:
'projectfolder' already exists in the index"
这是我的存储库所需的结构:
repo
|-- projectfolder
|-- folder with common code
可以直接在存储库中添加git
子模块,也可以将其添加到新文件夹中,但不能添加到项目文件夹中。问题是它确实需要放在项目文件夹中。我能对此做些什么?我对git子模块add的path选项有什么误解?
发布于 2018-07-08 00:04:28
您需要首先为git路径删除子模块git存储库(在本例中为projectfolder)。
rm -rf projectfolder
git rm -r projectfolder
然后添加子模块
git submodule add <git_submodule_repository> projectfolder
发布于 2016-07-25 23:02:26
只是为了用人类的语言来澄清错误试图告诉你的是什么:
您不能在此文件夹中创建已在主存储库中跟踪的存储库。
例如:您有一个名为AwesomeTheme
的主题文件夹,它是一个专用存储库,您尝试将其直接转储到您的主存储库(如git submodule add sites/themes
)中,您会得到此"AwesomeTheme" index already exists
。
您只需要确保在主存储库的版本跟踪中没有sites/themes/AwesomeTheme
,这样就可以在那里创建子模块。
所以要解决这个问题,在你的主存储库中,如果你有一个空的sites/theme/AwesomeTheme
目录,那么就删除它。如果您已经提交了主存储库中的sites/theme/AwesomeTheme
目录,则需要使用如下命令清除它的所有历史记录:
git filter-branch --index-filter \
'git rm -r --cached --ignore-unmatch sites/theme/AwesomeTheme' HEAD
现在可以运行git submodule add git@AwesomeTheme.repowhateverurlthing sites/themes/AwesomeTheme
了
由于主存储库以前从未在sites/themes/AwesomeTheme
中看到过任何内容(也称为索引),因此它现在可以创建它。
发布于 2012-10-16 17:18:56
我用另一种方式让它正常工作。从一个空的repo开始,在名为"projectfolder/common_code“的新文件夹中添加子模块。之后,就可以在projectfolder中添加项目代码了。详细信息如下所示。
在空的repo类型中:
git submodule add url_to_repo projectfolder/common_code
这将创建所需的文件夹结构:
repo
|-- projectfolder
|-- common_code
现在可以添加更多的子模块,并且可以将项目代码添加到projectfolder。
我还不能说为什么它是这样工作的,而不是另一个。
https://stackoverflow.com/questions/12898278
复制相似问题