GitHub Pages托管技巧 用Git子模块管理项目更简单

阿木 发布于 8 小时前 2 次阅读


我真服了,Git子模块这玩意儿。

喜欢你阶段,你会觉着它是世间最为精妙的设计,而当恨它时刻,它仿若你衣柜最里头那件再也穿不了却偏偏舍不得丢弃的牛仔裤。

其实独立的子模块并不难理解,对吗

对吗?对个屁。

入坑之际,我亦觉不过是三行命令之事,即git submodule add,而后commit,接着push,仿若乖巧之小学生。然直至某日,我言“就今日,我要将我的.js幻灯片们,如挂衣服那般整整齐齐挂于GH-Pages的各式衣架之上”,问题遂至。

我于整个网络展开搜索,嗯,确切来讲只是翻阅了大约二十个网页而已,所有人传授于你的皆是“如何进行添加”,却没有任何人告知你“添加之后怎样使其安稳地处于子路径之中”。

怎么让子模块住在子路径上?

这就是那天凌晨两点的我。

我期望,我的那个演讲存储库,也就是名为“-101”的,破烂不堪的小项目,大大方方地,安安稳稳地,住在felixwu.io/-101这个地方。

而还有一个名字叫做“-202”的,居住在felixwu.io这个地方的“-202”这个位置。

多简单的要求啊。像宿舍楼分配寝室。

Git Pages说:可以,你设自定义域名,或者子路径。

子模块说:行,你把我加进去。

git submodule add 

但他们俩不说话。

你可晓得那种感受呀,引荐两位友人相识,然而他俩相互瞅了一眼,随后各自低下头去摆弄手机。

为什么我按照教程做了还是404

嗯。

你凝视着空白的页面,页面也凝视着你。

我进行尝试,将子模块添加到一个名为“presentations”的仓库,接着是gh - pages分支,随后在设置里把分支切换过去,按道理讲,felixwu.github.io/presentations/-101。

按理说。

但404像一张嘲讽的笑脸。

随后我发觉自身愚笨,要不然就是说,Git未告知我:待子模块克隆完成后,你需进入那个目录,手动去切换分支,即gh - pages分支。它自身并不晓得要去到那里就位。

代码没长脚。写代码的人得长脑子。

自定义域名能同时宠幸主项目和子模块吗

能的。

这就是Git Pages为数不多的仁慈时刻。

您能够于根目录搁置您的博客,于/xxx放置您的实验项目,于/yyy摆放您为前任所做的那个从未发出过的纪念页。

像一个房东,把不同房间租给不同时期的自己。

我设了felixwu.io。然后子模块们自动挂在了/下面。

那一瞬间我觉得我驯服了它。

但你知道,Git这种生物,它只是暂时累了。

删除子模块为什么这么痛

有天我想清理一下。

我想把那个早就不维护的-101从项目里摘掉。

就像从一件毛衣上拆掉一截早就起球的线头。

然后我发现它不是线头。它缝进去了。

mkdir parentrepo && cd parentrepo/git initgit submodule add https://github.com/flxwu/firebase-101

git submodule deinit。

rm -rf .git/modules/xxx。

git rm --cached。

手动打开.git/config删掉那截脏脏的段落。

像个外科手术。还不能打麻药。

有人问,为什么不直接删文件夹。

呵呵。

你来进行删除操作呀,当你完成删除之后,就会察觉到,在紧接着的下一次git pull进行时,它好似一个阴魂一般的存在,再度回归了。

子模块不会因为你假装它不存在,就真的不存在。

子模块教会我的事

大概是这样:

形如独自存在之仓储库仿若单独之个体,你将其引入你的生活(运用git子模块添加操作),你觉得你把它据为己有,不,你只不过是借给它一片空间,它的脉动依旧是属于自身的。

git commit -a -m "Initial Commit"git remote add origin [your github repository .git link]git push origin master

对于(gh-pages)而言,你期望它呈现什么,是需要向其下达指令的。它并非属于你的器官,它仅仅是借居在你这儿的房客。

而你想让它走——

那就做好四次清理、三次提交、一次深呼吸的准备。

那我还用吗

用。

当然用。

在昨天的时候,我再度创建了一个全新的子模块,我将一个于三年之前所撰写的静态页面翻找出来,打算挂载在2026年的新域名之下。

我还是会忘记加--recursive。

还是会忘记在setting里等那两分钟DNS刷新。

依旧会于.gitmodules之中采取手动输入.url来导致出现打到遗漏最后一个字母的情况。

但还是会弄好。

一番折腾结束后,站在了felixwu.io/old-thing/跟前,页面缓缓地被加载出来了,三年之前的那个自己隔着屏幕朝着此时此刻正在这儿的我招了招手。

那一刻我觉得,值。

值。

大概所有的工具都这样。

并非是为完美的家伙预备的,而是为那些乐意与复杂共同存在,乐意于夜里等候一个从404转变为200的人预备的。

如果你也正在这么做。

如果你也在某个子模块里,迷路了。

没啥事儿,执行git submodule update这一操作,并且要带上--init这个参数,同时还要加上--recursive这个参数。

再来一次。