2017-08-17 71 views
1

我使用Github Pages举办使用者网页和Jekyll Now项目网页。由于Github Pages分配网址的方式,用户网页位于username.github.io,而项目分配给username.github.io/blog。当子模块更新时,Github超级项目显示更改?

我想要的博客项目,以便能够从用户的网页访问某些文件,如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上,要了解的东西是如何工作的,并担心这可能会导致意外的行为下了线。

可能值得注意的是,根据子模块,我没有预见到这个超级项目 - 相反,子模块将依赖于超级项目来获得其某些样式。


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

回答

0

Git submodules act作为正常的储存库。超级存储库只会看到子模块的签出提交中的更改。

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

我的问题:这个推送是否做了任何会影响 我的项目/网站的工作方式?或者它只是涂写评论 这只是目的是被人类读取?

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

+0

因此,如果我理解正确,超级存储库会为其子模块存储一个提交ID。当某人克隆超级存储库时,此ID将用作指针,以便克隆子模块的相应版本。这意味着我的推送影响了标准的Github源代码控制系统,但不影响Github Pages(虚拟主机)方面。 –

+0

这是正确的,你有自己的Github页面的本地副本。要远程影响它,推送子模块内的更改。 – destoryer

相关问题