将本地存储库推送到远程控制器不会使用GIT推送子模块文件

时间:2011-03-28 12:24:40

标签: linux git version-control git-submodules

我是GIT的新手并且正在努力解决这个问题。我有一个存储在存储库中的网站。该网站需要一个主题文件夹,该文件夹设置为单独的存储库。

我已成功使用git submodule add命令将主题存储库添加到我的网站。

所以现在我有一个主题儿童repro的网站repro。子模块的文件显示在我的网站文件夹中。

我正在尝试将整个主网站repro推送到可以工作的远程服务器,但不会推送主题(子模块)的文件。

2 个答案:

答案 0 :(得分:2)

子模块非常像一个独立的存储库 - 它对于它是否作为子模块包含在父存储库中一无所知。父存储库对子模块的了解不多 - 它应该在树中的位置,子模块应该提交的内容以及最初从子模块中克隆的URL ...

我认为没有一个命令会为你推送所有子模块 - 更新子模块中的某些文件时的事件序列应为:

 cd theme

 # [Change or add some files, etc.]

 # Now commit those changes:
 git commit -a

 # Push them to the origin repository, assuming you're on the master branch:
 git push origin master

 # Change up to the parent repository:
 cd ..

 # Create a commit with the new version of that submodule:
 git add theme
 git commit -m "Committing a new version of the theme submodule"

 # Now push the commit that includes a pointer to the new submodule
 # version in the parent repository:
 git push origin master

此处的典型问题是在父存储库中推送提交,该提交引用了尚未从子模块版本推送的子模块版本。您可能会发现创建脚本很有帮助,这样您就不会忘记任何这些步骤。

答案 1 :(得分:0)

我只想将主题目录添加为远程 - 而不是子模块。管理您自己分支中的文件位置。主题的后续更新应移至正确的文件夹。

现在,推送将按照您的预期行事。

希望这有帮助。