我想添加一些git子模块。
我已经收到了两个共享一些公共代码的项目。共享代码只是复制到两个项目中。我为公共代码创建了一个单独的git repo,并将其从项目中删除,计划将其作为git子模块添加。
我使用了git子模块add的路径选项来指定文件夹:
git submodule add url_to_repo projectfolder
但随后出现了错误:
'projectfolder' already exists in the index"
这是我的存储库所需的结构:
repo
|-- projectfolder
|-- folder with common code
可以直接在repo中添加git子模块,或者添加到那里的新文件夹中,但不能添加到项目文件夹中。问题是,它真的需要在项目文件夹..
对此我能做什么,我对git子模块add的路径选项有什么误解?
用人类语言解释一下这个错误的意思:
不能在此文件夹中创建已在主存储库中跟踪的存储库。
例如:你有一个名为AwesomeTheme的主题文件夹,这是一个专用的存储库,你试着把它直接转储到你的主存储库,比如git submodule add sites/themes,你会得到这个“AwesomeTheme”索引已经存在。
您只需要确保在主存储库的版本跟踪中没有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子模块添加git@AwesomeTheme.repowhateverurlthing sites/themes/AwesomeTheme
因为主存储库以前从未在sites/themes/AwesomeTheme中看到过任何东西(也就是索引),所以现在可以创建它了。
用人类语言解释一下这个错误的意思:
不能在此文件夹中创建已在主存储库中跟踪的存储库。
例如:你有一个名为AwesomeTheme的主题文件夹,这是一个专用的存储库,你试着把它直接转储到你的主存储库,比如git submodule add sites/themes,你会得到这个“AwesomeTheme”索引已经存在。
您只需要确保在主存储库的版本跟踪中没有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子模块添加git@AwesomeTheme.repowhateverurlthing sites/themes/AwesomeTheme
因为主存储库以前从未在sites/themes/AwesomeTheme中看到过任何东西(也就是索引),所以现在可以创建它了。