【问题标题】:Force Adding Submodule Contents in Git在 Git 中强制添加子模块内容
【发布时间】:2016-12-01 22:54:54
【问题描述】:

我在一所学校编码,该学校要求我们使用 git 将所有工作提交到他们的服务器。每个作业都有自己的文件夹,该文件夹有自己的 .git 目录。

我正在尝试将父文件夹推送到我的 github,但是当我推送时它实际上并没有上传文件夹内的代码,因为它被认为是一个子模块。我尝试制作一个忽略所有 .git 文件夹的 .gitignore 文件,但没有奏效。

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

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

【问题讨论】:

  • “手动推送每个文件夹”有什么问题?这是最适合 Git 的地方,假设每个分配都与其他分配无关。每个项目一个存储库。你经常更新旧作业吗?如果assignment1/assignment4/ 没有改变,推送assignment5/ 和推送course-assignments/ 有什么区别?

标签: git github git-submodules


【解决方案1】:

要将所有内容推送到 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 不再将其视为该 repo 中的子模块。现在您可以在 两个 存储库中跟踪其内容。 I've seen this before,但我看不到任何具体的好处,这似乎是很多工作。 Here's another way to go about it,保持子模块边界和工作流程基本不变,但将子模块推送到主模块中的分支。

【讨论】:

    猜你喜欢
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2017-10-21
    • 2010-12-04
    相关资源
    最近更新 更多