如何將你的github倉(cāng)庫(kù)部署到github pages
很多時(shí)候我都在思考一個(gè)問(wèn)題,我們每天遇到各種各樣的問(wèn)題,然后我們需要不斷google、百度,達(dá)到我們解決問(wèn)題的目的。但是在這個(gè)過(guò)程中,我們總是能夠見(jiàn)到,對(duì)于同一個(gè)問(wèn)題,總是有大量錯(cuò)誤、copy的博客、文庫(kù)乃至吊炸天的百度知道,一次又一次減慢了我們解決問(wèn)題的進(jìn)度。更加糟糕的是,這種copy是保量不保質(zhì)的,所以我們總是希望,每當(dāng)我們google或者百度的時(shí)候,都能夠最快解決我們需要解決的問(wèn)題。然而,這貌似是不切實(shí)際的,在人人都有權(quán)利發(fā)表文章的今天,要想禁止這種無(wú)意義的抄襲幾乎是癡人說(shuō)夢(mèng)。清晰意識(shí)到這一點(diǎn)之后,我覺(jué)得更加有效的方式是每一個(gè)發(fā)表博客或者活躍于問(wèn)答網(wǎng)站的人都應(yīng)該把自己的博客或者解答做到精煉和準(zhǔn)確,在某種意義上來(lái)說(shuō),這是一種義務(wù)和責(zé)任。
當(dāng)然,前面扯遠(yuǎn)了點(diǎn),今天我們討論一下傳說(shuō)中的github pages。正如前面所說(shuō)的,每一篇博客都應(yīng)該對(duì)癥下藥,所以本文章默認(rèn)你有g(shù)ithub賬號(hào)、安裝了Git并且熟悉基本的Git操作,只是需要尋求部署github pages方面的知識(shí)。
作為教程,很重要的一點(diǎn)就是要***化的傻瓜化,本文將從新建一個(gè)github倉(cāng)庫(kù)開(kāi)始到成功部署github pages一步步解析。
***步:新建一個(gè)github倉(cāng)庫(kù)"hello-ghpages":
現(xiàn)在我們有了一個(gè)空的倉(cāng)庫(kù),上面只有README.md和LICENCE文件,并且注意現(xiàn)在所在的分支是"master"。之所以強(qiáng)調(diào)這一點(diǎn)是因?yàn)榻酉聛?lái)的步驟必須明確自己的github page在哪個(gè)分支下面,這個(gè)等會(huì)兒再介紹。
第二步:點(diǎn)擊頁(yè)面右邊一列的“Settings”,跳轉(zhuǎn)到項(xiàng)目設(shè)置界面:
第三步:在設(shè)置界面我們能夠看到有一塊的標(biāo)題是“Github Pages”,點(diǎn)擊這一塊上面的“Automatic page generator”按鈕:
第四步:在“New Project Site”頁(yè)面,需要注意的是頁(yè)面最下面的“tracking ID”。“tracking ID”的作用是使用Google的Analystics功能,該功能能夠分析你的網(wǎng)站的訪問(wèn)量等網(wǎng)站數(shù)據(jù),可以不填。如果需要使用該功能,可以參考鏈接https://support.google.com/analytics/answer/1032385?hl=en。然后點(diǎn)擊“Continue to layout”按鈕。
第五步,設(shè)置主題,就能夠發(fā)布了:
這樣,我們就能夠通過(guò)鏈接:http://username.github.io/hello-ghpages/訪問(wèn)我們剛剛發(fā)布的頁(yè)面了,其中username是你的github賬戶的名字。根據(jù)博主的經(jīng)驗(yàn),***次部署的話,等待的時(shí)間是比較長(zhǎng)的,大概是十分鐘到十五分鐘左右。所以如果你立馬訪問(wèn)剛剛發(fā)布的頁(yè)面可能會(huì)出現(xiàn)404錯(cuò)誤,不要著急慢慢等上十多分鐘,會(huì)得到你想要的效果的:
到這一步,我們已經(jīng)完成了github pages的部署,但是在這個(gè)時(shí)候我們面臨了兩個(gè)問(wèn)題,***:最初生成的倉(cāng)庫(kù)只有兩個(gè)文件,不存在定義我們現(xiàn)在看到的github pages樣式、內(nèi)容的文件;第二,既然我們沒(méi)有定義這些文件,而我們看到的這些文件有必須是真實(shí)存在的,這些文件放在了哪里?答案就涉及到我們一開(kāi)始提到的分支了。我們?cè)谑褂?ldquo;Automatic page generator”功能的時(shí)候,github會(huì)自動(dòng)在你項(xiàng)目的“master”分支下面新建一個(gè)“gh-pages”分支,而這個(gè)分支里面的代碼定義了我們剛剛看到的部署成功的github pages頁(yè)面的內(nèi)容和樣式。
我想在這里是有必要簡(jiǎn)單介紹一下分支這個(gè)概念的。分支分成兩種,一種是上面截圖中看到的,這種叫做遠(yuǎn)程分支,另外一種是我們?cè)谑褂肎it進(jìn)行版本控制的時(shí)候使用到的,叫做本地分支。在使用Git進(jìn)行版本控制的時(shí)候,對(duì)于每一次提交,都會(huì)生成一個(gè)commit對(duì)象,這個(gè)commit對(duì)象包含了以下內(nèi)容:
- 提交信息元數(shù)據(jù):包含了提交者、作者、提交時(shí)間等信息
- 一個(gè)包含指向 tree 對(duì)象(根目錄)的索引:在提交之前,Git 會(huì)先計(jì)算每一個(gè)子目錄的校驗(yàn)和,然后在 Git 倉(cāng)庫(kù)中將這些目錄保存為樹(shù)(tree)對(duì)象。commit對(duì)象中的這個(gè)索引指向了這個(gè)對(duì)象。參考一下《pro git》里面的這張圖就能很好的理解了:
對(duì)于提交有了一定認(rèn)識(shí)之后,分支就更好理解了,Git 中的分支,其實(shí)本質(zhì)上僅僅是個(gè)指向 commit 對(duì)象的可變指針。結(jié)合實(shí)際,我們來(lái)分析一下:在新建一個(gè)github倉(cāng)庫(kù)的時(shí)候,從上面的圖我們可以看到,github會(huì)自動(dòng)創(chuàng)建一個(gè)提交叫做“Initial commit”,同時(shí)新建了一個(gè)master分支,這個(gè)master分支是指向“Initial commit”提交對(duì)應(yīng)的commit對(duì)象;在部署github pages的時(shí)候,github新建了一個(gè)分支,并且產(chǎn)生了一次提交“Create gh-pages branch via Github”。你可以把上面的過(guò)程理解成下面幾條命令:
git branch gh-pages //在master分支下面新建一個(gè)gh-pages分支
git checkout gh-pages //切換到新建的gh-pages分支
git rm -rf . //由于master分支和gh-pages分支里面的內(nèi)容完全不同,所以首先清空了所有文件
//在清空的文件夾里面自定義新的文件,也就是上面截圖中看到的gh-pages分支中的文件
git add . //跟蹤自己定義的文件
git commit -m "Create gh-pages branch via Github" //提交本次修改
到目前為止,你就覺(jué)得一個(gè)問(wèn)題應(yīng)該是如何將現(xiàn)在看到了github pages定義成我自己想看到的效果,這里就需要用到Git了。
第六步:Clone遠(yuǎn)程倉(cāng)庫(kù)到本地:
第七步:clone下來(lái)默認(rèn)為master分支,所以我們?cè)谖募A里面看到的是master分支對(duì)應(yīng)的內(nèi)容。而我們需要編輯的是gh-pages分支,因?yàn)檫@個(gè)分支才能夠定義github pages的內(nèi)容和樣式。我們需要執(zhí)行下面的命令:
上面的命令的意思是說(shuō),在本地新建一個(gè)分支,本地分支的名字叫做“gh-pages”,這個(gè)新建出來(lái)的分支是在遠(yuǎn)程分支“origin/gh-pages”分支下面分化出來(lái)的,切換到新建出來(lái)的"gh-pages"分支,這個(gè)時(shí)候,我們看到在文件夾"hello-ghpages"下面的文件時(shí)遠(yuǎn)程分支"gh-pages"的內(nèi)容了:
第八步:刪除里面的所有文件,當(dāng)然***不要直接刪除,而是通過(guò)git命令,那樣會(huì)更加方便快捷。
第九步:目前為止,這個(gè)文件夾是空的了,我們?cè)诶锩嫘陆ㄒ粋€(gè)index.html文件,在里面定義一些內(nèi)容,并且提交到當(dāng)前分支。
第十步:提交到遠(yuǎn)程分支,查看效果:
第十一步:查看效果吧,哈哈:
到這里就大功告成了,嘿嘿。讓我們來(lái)回顧一下,在整個(gè)教程中,我們需要掌握的主要是如何將遠(yuǎn)程分支分化到本地,并且自定義遠(yuǎn)程分支的內(nèi)容。上面的index.html是github pages的主頁(yè),你可以在這個(gè)基礎(chǔ)上慢慢擴(kuò)充你需要顯示的內(nèi)容,一切都和教程中展示的一樣。如果你有什么問(wèn)題或意見(jiàn),歡迎在下面的評(píng)論中提出。
***,我還是想講一點(diǎn)題外話,如果覺(jué)得本篇博客寫(xiě)的不錯(cuò)并且希望轉(zhuǎn)載到自己的博客,請(qǐng)注明轉(zhuǎn)載地址:http://www.cnblogs.com/yuanzm/p/3945814.html,這是對(duì)博客作者最基本的尊重,謝謝。