2016-12-01 76 views
2

我在一所学校编码,要求我们使用git将我们所有的工作提交给他们的服务器。每个作业都有自己的具有自己的.git目录的文件夹。强制在Git中添加子模块的内容

我想让父文件夹推送到我的github,但是当我推送它时实际上并没有上传文件夹内的代码,因为它被认为是一个子模块。我已经尝试制作一个忽略所有.git文件夹的.gitignore文件,但那不起作用。

我见过的唯一解决方案是每次我想将项目内部的更改推送到我的github,或者编写一个将父目录的内容与第二个目录同步的脚本时手动执行git remote,然后在推送前删除所有的.git文件夹。

有没有什么办法可以干净地推送到github,而无需手动推送每个文件夹,并且不必为了推送到github而创建一个本质上是我工作副本的目录?

+0

“手动推送每个文件夹”有什么问题?这对于Git来说是最合适的,假设每个任务与其他任务无关。每个项目一个存储库。你经常更新旧作业吗?如果'assignment1 /'通过'assignment4 /'没有改变,推送'assignment5 /'和推送'course-assignments /'有什么区别? – Chris

回答

2

为推动一切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不会把它作为一个子模块在回购任何:

如果你真的想通过打孔的子模块,您可以通过添加内容,而不是子模块绕过库更多。现在您可以在两个存储库中跟踪其内容。 I've seen this before,但它看起来像很多工作没有具体的好处,我可以看到。 Here's another way to go about it,保持子模块的边界和工作流程大体完好,但将子模块推向主模块的分支。