繁体   English   中英

Git子模块:一个令人困惑的声明

[英]Git submodules: A confusing statement

Pro Git书中的页面http://git-scm.com/book/en/Git-Tools-Submodules讨论了将子模块创建为git项目中的目录。 这是用于添加子模块的命令:

$ git submodule添加git://github.com/chneukirchen/rack.git rack

它在页面的后面说

您可以将rack目录视为单独的项目,然后使用指向该子项目中最新提交的指针不时更新您的超级项目。

这是什么意思? 我不知道在这种情况下“指针”或“更新”是什么意思。 该指针存储在何处以及如何存储? 如何更新超级项目?

子模块是一个独立的Git仓库 - 它是一个子模块的原因是它是如何被“超级项目”引用的,或者说是子模块仓库所在的Git仓库。

当您对正在用作子模块的仓库进行更改时,您将像通常使用Git仓库一样工作 - 您将进行更改,添加,提交和推送它们。 但是在子模块仓库中进行这些更改之后,您会在“超级项目”仓库中注意到将存在未提交的更改,并且这些更改将引用子模块仓库。

那变了什么? 好吧,一个“超级项目”仓库密切关注子模块仓库 - 它的位置,名称和(这很重要)它当前的提交。 为什么提交? 因为它允许您在“超级项目”中指定在子模块中引用的正确提交是什么。 这有很多优点 - 使用第三方库(作为子模块)的图片,最近最近更新了一些您尚未更新项目以适应的向后更改。 通过保留对旧提交的引用,您可以确保开始处理项目的任何人都将使用正确支持的子模块版本。

如果要更新“超级项目”以引用子模块的最新提交,只需像添加,提交和推送任何其他更改文件一样。

Dev1和Dev2具有以下源代码结构。

  • SrcTree
    • MainCode
    • 子模块

Dev2对SubModule进行了一些更改并推送了更改。

  • 来自subModule
    • “git add submodule的文件”
    • “git commit”
    • “git push”
  • 来自SrcTree
    • 承诺
    • push //这将更新子模块的指针

Dev1需要执行以下操作才能正确更新subModule

  • 混帐拉//这将改变指针,但没有提到更新子模块这里
  • git submodule update //这将更新子模块

你可以参考这篇关于git子模块的帖子。 http://plasmixs.wordpress.com/2013/10/06/git-submodules/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM