我使用git submodule add <GitHubURL.git>
将项目作为子模块添加到主“父”项目存储库。
Parent_Project_repo
- SubA_repo
- SubB_repo
- SubC_repo
- Sub_Problem_Child_repo
当我在子模块中工作时,我在Sub*_repo
项目中进行提交(按照惯例,提交我所处理的任何文件)。但是,在父项目中,通常我只对所有子模块提交进行一次提交。子模块的这个单一提交通常在Parent_Project_repo
:
我最近添加了一个子模块,来自父存储库,在提交历史记录中显示每个单独的文件,而不是仅仅访问一个“子项目”提交对象中的所有文件/提交。 / p>
值得注意的是:
git submodule status
Parent_Project_repo/.gitmodules
Parent_Project_repo/.git/config
Parent_Project_repo/.git/modules/Sub_Problem_Child_repo/
文件夹。如何将问题子进入名单并且能够将Parent_Project_repo处理的所有提交作为一个对象?
更新:
我在“问题子”子模块中看到的唯一区别是它在/.git/modules/config
文件中没有“historySha”键,例如:
[atomGithub]
historySha = 1936e4c373c130860a8f92683b517dad713ec37
此外,这些命令不会在状态中列出问题子项:
$ git submodule update --init --recursive
$ git submodule update --recursive
$ git submodule init
...也没有出现在父项目中的GitHub上,带有“@ e78c392”,表示我可以双击该链接并获得那个 repo而不是超级项目中的副本(Parent )。
答案 0 :(得分:2)
如果使用git submodule add <URL>
将git存储库设置为&#34;超级项目中的子模块&#34;并且子模块不是作为单个对象在超级项目中提交的(即,当从超级项目中提交子模块时,您必须从子模块提交每个单独的文件),然后按照以下步骤重新配置:
git add .gitmodules
git rm --cached -rf PATH_TO_SUBMODULE
,其中PATH_TO_SUBMODULE
是子模块文件夹的实际路径。rm -rf .git/modules/PATH_TO_SUBMODULE
。git commit -m "Removed submodule commit message"
。rm -rf PATH_TO_SUBMODULE
git submodule add <URL>