维护包含其他克隆git repo的git repo

Kum*_*rav 6 git version-control github

我正在使用Sharelatex(github)的网站上工作,但它包含用于构建主项目的其他存储库.我克隆了主存储库,并用grunt install它来下载这些存储库.

但问题是我需要更改主存储库和下载的存储库中的代码.

由于这些项目可以获得新的更新,我也希望合并这些更改.我还需要维护一个仓库,但是当我将更改推送到Github时,它只显示主仓库的变化.

submodules在git中遇到过,但由于主项目不包含任何子模块类型,我无法使用它.

例如:

web主项目中使用了一个回购.我从文件中的一些编辑开始web.我需要这些更改反映在我的远程存储库中,以便其他人可以使用它们.

现在假设一段时间后web可以获得repo 的重要更新,我应该如何使用它?

grunt install在命令行输入以下载此repo.它不会创建一个子模块,而是克隆到我的文件夹中,然后我的主git repo会忽略它.

这个问题似乎不太清楚,但我尽力解释这个问题.

在坚果壳中:

  • 我不仅要在主要和任何其他回购中执行更改,还要在其更新可用时拉动并合并其他回购.

  • 我还需要维护我项目的远程仓库.

jth*_*ill 6

我正在使用Sharelatex(github)在一个网站上工作,但它包含用于构建主项目的其他存储库.[...]我在git中遇到了子模块,但由于主项目不包含任何子模块,我无法使用它.

实际上,你确实有一个子模块.这就是一个嵌套的存储库,并且(我对此很认真)至于你需要理解的grok子模块,这就是子模块的全部内容.要了解子模块,假设您有一个嵌套的存储库(您这样做)并考虑管理要求,需要采取哪些措施来支持dvcs中的设置.

对于初学者来说,当人们克隆一个使用来自某个仓库的子模块的项目时,你们已经决定包含已发布的提交,那个克隆显然也不会获得子项目存储库(当然它不应该让你的私有和上帝知道什么 - 你完成了它的版本).因此,他们还必须从其自己发布的某个存储库获取子项目repo.

你怎么告诉人们提交你的提交在哪里获得必要的子项目提交?显然,你必须在一个提交文件中的某处放一个注释,说"这里有一个应该有任何需要的子项目提交的仓库". 作为存储这样的笔记的传统地方git submodule已经落户.gitmodules.

接下来:嗯,如果您递交的网址脱机,其他人可以做什么?他们显然需要使用另一个回购.因此,.gitmodules只是建议,该git submodule命令使用您的当前值.git/config,该值git submodule init已从.gitmodules`中的建议值填充.

git submodule的操作这样.忘掉它.在你需要一些帮助做你已经发现需要做的事情之前,甚至不用费心去查看命令.从知识开始,简单的事实是,子模块只不过是一个嵌套的repo,而使用它的项目只提交一个应该在嵌套repo中的某个地方的提交id.而已.这都是子模块.

当您遇到需要执行的繁琐任务时,请查找为您执行这些任务的git submodule子命令.您不必使用子命令.所有该子命令正在做的是自动化直接的任务,否则将是费力的.它是一个工具包,可以用来做你需要做的任何事情,而且世界上没有办法可以或者应该对世界上每个人施加一些任意和充分的(< - 那是困难的部分)抽象.所以它是一个抓包.

也就是说,当你为你做的时候,有一个重要的安全游戏git submodule updategit submodule add为你表演git clone.存储库通常具有[sub]项目下的实际repo内容.git,但是如果你检查出那个没有该子项目的分支,或者需要或者想要该子项目消失,它 .git也会消失 - 不是你想要的当它不仅包含您签出的内容而且包含整个实际的回购.因此,当git submodule update它的初始克隆时,它将子模块的.git目录提升到包含项目的repo中的一个方便(和任意)的小角落中,并用.git.git包含移动目录的相对路径的文件替换刚从子模块移出的目录.

要在您当前拥有的仓库上完成初始提升,请将其从当前仓库中移出,在您放置的任何位置添加和更新,然后修复上游URL以.gitmodules方便其他仓库.

那里.现在你完全了解了解git子模块所需要知道的一切,只有当你发现需要它们时才能逐步获取细节,了解git submodule命令对你做了什么,以及为什么你实际上不需要关心理解每一件小事.在其前面的手册页上.至少,我是这么认为的.

如果我错过了任何重要的事情,我会很高兴(温和或直率,我真的不在乎)评论中的更正.