在Git中强制添加子模块内容

4
我在一所学校进行编码,他们要求我们使用git将所有作业提交到他们的服务器。每个任务都有自己的文件夹,里面有它自己的.git文件夹。
我试图让父目录推送到我的github上,但是当我执行push命令时,它实际上并没有上传文件夹中的代码,因为它被视为子模块。我尝试制作一个.gitignore文件来忽略所有.git文件夹,但这并没有起作用。
我看到的唯一解决方法是每次想要将项目内的更改推送到我的github上时手动运行 "git remote" 命令,或者编写一个脚本将父目录的内容与第二个目录同步,然后删除里面所有的.git文件夹再进行推送。
有没有什么方法可以干净地推送到github上,不需要手动推送每个文件夹,也不需要制作一个本质上只是为了向Github推送工作副本的目录?

“手动推送每个文件夹”有什么问题吗?假设每个任务与其他任务无关,这是Git的最佳适用方式。每个项目一个存储库。您经常更新旧作业吗?如果assignment1/assignment4/没有更改,那么推送assignment5/和推送course-assignments/之间有什么区别? - Chris
1个回答

11

将所有内容推送到github:

find -name .git -execdir git push \;

会做。

如果你真的想要访问子模块,可以通过添加内容而不是子模块来绕过存储库:

git rm -rf --cached path/to/submodule     # to clear out any submodule entry
git add path/to/submodule/.

现在,git不再将其视为子模块,你可以在两个存储库中跟踪其内容。 我以前见过这种情况,但我似乎看不到任何具体的好处。另一种方法是在维持子模块边界和工作流程的基础上,将子模块推送到主模块的分支中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接