【问题标题】:Github superproject shows changes when submodule updates?Github 超级项目在子模块更新时显示更改?
【发布时间】:2018-01-26 07:46:40
【问题描述】:

我正在使用Github Pages 托管用户网页和Jekyll Now 项目网页。由于 Github Pages 分配网址的方式,用户网页位于 username.github.io,而项目分配到 username.github.io/blog。

我希望博客项目能够从用户网页访问一些文件,例如 styles.css。为了方便相对文件路径,我认为将我的博客项目本地嵌套在我的用户网页目录中是个好主意;这样,网络和本地计算机上的相对路径将是相同的,这意味着路径“../styles.css”将让我的博客项目在所有上下文中访问用户网页的 CSS。

为了嵌套项目,我只是在本地用户网页存储库中创建了博客项目的本地克隆。方便的是,Github 用户网页存储库立即将此 /blog 目录识别为子模块。我一直在做一些研究和一些测试,以确保这种安排会产生我想要的行为,到目前为止,除了一个令人困惑的脚注之外,一切都很完美。

我在本地子模块中进行了更改并推送了它。然后,在不进行任何其他更改的情况下,我使用以下代码暂存、提交和推送我的超级项目存储库:

git add .
git commit -m "just a test"
git push origin master

我预计推送会失败,因为我实际上并没有在超级项目中进行任何更改——唯一的更改是在子模块中。然而,令我惊讶的是,这种推动奏效了。

当我在 Github 上分析提交时,它显示了对博客文件夹的单个更改,如下所述:

Submodule blog updated from 632f0e to e6a35d

我的问题:此推送是否会在功能上影响我的项目/网站的运行方式?还是只是草草写下唯一目的是供人类阅读的评论?

目前我还没有发现任何功能差异,但我还是 Github 的新手,想了解事情的运作方式,并担心这可能会导致不良行为。

值得注意的是,我不认为这个超级项目会依赖于子模块——相反,子模块将依赖于超级项目来获得它的一些样式。


没有回答这个问题的结果(可能是因为问题比我能理解的更复杂):

【问题讨论】:

    标签: css git github web git-submodules


    【解决方案1】:

    Git 子模块充当普通存储库。超级仓库只会看到子模块的签出提交中的更改。

    您所做的更改预计会在超级存储库中提交,否则它如何知道要使用哪个版本的子模块?

    我的问题:这个推送是否做了任何会影响功能的事情 我的项目/网站的运作方式?或者它只是草草评论 唯一的目的是让人类阅读?

    是的,您的存储库的子模块指向不同的提交。克隆存储库会将子模块检查到该新提交。

    【讨论】:

    • 所以如果我理解正确的话,超级存储库会为其子模块存储一个提交 ID。当有人克隆超级存储库时,此 ID 用作指针,以便也克隆相应版本的子模块。这意味着我的推送影响了标准的 Github 源代码控制系统,但没有影响到 Github Pages(网络托管)方面。
    • 没错,您已经获得了 Github Pages 的本地副本。要远程影响它,请在子模块中推送更改。
    猜你喜欢
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多