在 Git 中强制添加子模块内容
Force Adding Submodule Contents in Git
我在一所要求我们使用 git 将所有工作提交到他们的服务器的学校编码。每个作业都有自己的文件夹,其中有自己的 .git 目录。
我试图让父文件夹推送到我的 github,但是当我推送时它实际上并没有上传文件夹内的代码,因为它被认为是一个子模块。我试过制作一个忽略所有 .git 文件夹的 .gitignore 文件,但这没有用。
我见过的唯一解决方案是每次我想将项目内部的更改推送到我的 github 时手动执行 git 远程操作,或者编写同步内容的脚本将父目录与第二个目录一起删除,然后在推送之前删除其中的所有 .git 文件夹。
有没有什么方法可以干净地推送到 github,而无需手动推送每个文件夹,也不必创建一个目录,该目录本质上是我工作的副本,只是为了推送到 github ?
将所有内容推送到 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, but it seems like a lot of work for no concrete benefit I can see. Here's another way to go about it,保持子模块边界和工作流程基本完整,但将子模块推送到主模块中的分支。
我在一所要求我们使用 git 将所有工作提交到他们的服务器的学校编码。每个作业都有自己的文件夹,其中有自己的 .git 目录。
我试图让父文件夹推送到我的 github,但是当我推送时它实际上并没有上传文件夹内的代码,因为它被认为是一个子模块。我试过制作一个忽略所有 .git 文件夹的 .gitignore 文件,但这没有用。
我见过的唯一解决方案是每次我想将项目内部的更改推送到我的 github 时手动执行 git 远程操作,或者编写同步内容的脚本将父目录与第二个目录一起删除,然后在推送之前删除其中的所有 .git 文件夹。
有没有什么方法可以干净地推送到 github,而无需手动推送每个文件夹,也不必创建一个目录,该目录本质上是我工作的副本,只是为了推送到 github ?
将所有内容推送到 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, but it seems like a lot of work for no concrete benefit I can see. Here's another way to go about it,保持子模块边界和工作流程基本完整,但将子模块推送到主模块中的分支。