深入 Github 主頁

jopen 9年前發布 | 8K 次閱讀 Github


上一篇我們講了 如何打造一個自動化的前端項目 ,大致提了一下如何用 Github 作為主頁來展示。這一章我們就來詳細說說 Github 主頁。

什么是 Github 主頁

Github 提供給每個用戶的一個用于運行靜態頁面的地址。包括一個二級域名( http://[Github 用戶名].github.io/ )和存放文件的版本庫。按照庫的類型可以分為 個人主頁項目主頁

下面我們就來講講如何創建這兩種主頁以及注意事項。

個人(組織)主頁

一般是用來作為你的個人(或組織)信息展示的主頁。

注意:

  • 1、創建的版本庫必須命名為 [Github 用戶名].github.io
  • 2、必須將要展示的內容放到 master 分支下
  • 3、訪問地址為 http://<Github 用戶名>.github.io

步驟:

這里我以我的 Github 賬戶 awesomes-cn 為例來講解:

1、在本地創建一個 awesomes-cn.github.io 文件夾:

mkdir awesomes-cn.github.io 

創建自己的主頁的項目,具體可參考 如何打造一個自動化的前端項目 ,這里我們簡單地只創建一個 index.html 頁面。

echo "My Page" > index.html 

2、在 Github 上創建名為 awesomes-cn.github.io 的個人項目。

3、回到本地項目根目錄,依次執行:

git init 

git add .

git commit -m 'init project'

git remote add origin git@github.com:awesomes-cn/auto-web.git

git push -u origin master 

上面的命令將本地項目上傳到了 Github 上,現在你可以通過 http://awesomes-cn.github.io 來訪問你的個人主頁了,注意這里也許會有延遲。

項目主頁

主要用來為每個項目創建說明文檔主頁。

注意:

  • 1、必須將要展示的內容放到 gh-pages 分支下
  • 2、訪問地址為 http://<Github 用戶名>.github.io/<項目名>

一般我們是在一個項目自身完成后才去創建項目主頁,所以在我們創建項目主頁之前,該項目已經存在了。 下面我們就給 awesomes-cn/emoji 這個項目添加一個項目主頁。

步驟:

1、首先我們給項目創建一個 gh-pages 分支:

git checkout --orphan gh-pages 

上面的指令是創建一個 gh-pages 分支,并切換到該分支。 --orphan 表示該分支是全新的,不繼承原分支的提交歷史(默認 git branch gh-pages 創建的分支會繼承 master 分支的提交歷史,所以就不純凈了)。不過需要注意的是,這里 git branch 是顯示不出 gh-page 分支的,需要做一次提交才行。

2、別急,接下來把新分支中的文件刪掉:

git rm -rf .
rm '.gitignore' 

3、然后創建我們需要的靜態頁面文件,這里象征性地創建一個 index.html 并寫入內容:

echo "My Page" > index.html 

4、然后開始做提交:

git add index.html
git commit -a -m "First pages commit"
git push origin gh-pages 

現在通過 git branch 就可以看到 gh-page 分支了。

然后訪問 http://awesomes-cn.github.io/emoji 就可以看到我們的項目主頁了。

注意事項

1、如果你的項目名開始或結尾包含破折號(如 emoji--emoji ),或者包含連續破折號(如 web--emoji ),那么Linux用戶訪問的時候會報錯,你需要移除項目名中的非字母數字的字符。

2、 大家也許注意到了,個人主頁的地址是 http://awesomes-cn.github.io/ ,而項目主頁的地址是類似 http://awesomes-cn.github.io/emoji ,事實上就是一個相對于個人主頁項目的二級訪問目錄。

那么問題來了,如果個人主頁項目里面有一個 emoji 文件夾,里面也有相應的靜態頁面。訪問 http://awesomes-cn.github.io/emoji 時究竟訪問的是哪個項目呢?

經過測試,實際上訪問的是 awesomes-cn/emoji 的項目主頁,也就是說個人主頁的 emoji 目錄是訪問不到的。

所以大家要注意不要造成這兩者的命名沖突。

到此為止,我們已經實現了通過命令行手動創建項目主頁了,不過這頁面也著實太丑了。不行,我得好好美化一下,設計是件艱苦差事,幸好Github為我們提供了一個頁面自動生成器。

頁面自動生成器

這是Github 為我們提供的可視化生成主頁的工具,具體操作如下:

在此之前,我們將上面手動生成的 gh-pages 分支刪掉:

刪除本地分支(需要切換到非 gh-pages 的分支):

 git checkout master
 git branch -D gh-pages 

然后刪除遠程分支:

git push origin --delete gh-pages 

OK 接下來我們就可以開始用自動生成的方式來創建項目主頁了。

1、在 Github 上切換到你的項目主頁,點擊 Settings 設置按鈕

2、點擊 Launch automatic page generator 啟動頁面自動生成器

3、進入主頁設計頁面(這里使用的是 Markdown 編輯器),并填寫相關的信息,還可以添加 Google 的統計插件。注意,這里我們一般可以通過加載 README.md 文件來直接從中讀取內容,否則你就得自己手動編寫。

4、點擊 Continue To Layouts 按鈕,進入模板選擇頁面。這里你可以選擇自己喜歡的模板樣式,是不是很漂亮?而且很多模板相信大家都在一些項目的主頁中看到過。

5、選擇好模板后,可以點擊左上角的 Publish page 發布頁面,然后就可以看到成功提示了。

6、最后,我們將 http://awesomes-cn.github.io/emoji/ 設置成項目主頁

整個過程完成后,你可以看到在你的項目中自動生成了一個新的分支。沒錯,就是 gh-pages ,可以看到里面有一些樣式和腳本文件。如果你對其中的某些部分不滿意,或者想添加新的頁面,那么可以將該分支 pull 到本地進行修改。

首先將分支拉到本地:

 git fetch origin 

然后切換到 gh-pages 分支:

 git checkout gh-pages 

接下來就可以做自己的修改了。

注意:如果你是在個人主頁中使用頁面自動生成器,那么最終的文件會生成到 master 分支下。因為上面我們說過個人主頁是 master 分支,項目主頁是 gh-pages 分支。所以可以直接

 git pull origin master 

第三方工具

當然,除了上面兩種方式,還有很多第三方的工具來幫助我們構建主頁,如 jekyll ,這里我就不詳細講了,感興趣的同學可以了解一下。

域名綁定

有的同學不喜歡 Github 給的二級域名,想設置自己的域名來訪問,很簡單,我們這里以我的個人主頁項目 來介紹。

1、來到 項目主頁 ,切換到 master 分支下(注意:如果是個人主頁則切換到 master 分支,如果是項目主頁則切換到 gh-pages 分支),新建一個文件:

2、將文件命名為 CNAME ,然后添加你要解析的域名 home.awesomes.cn (注意這里不是 http://home.awesomes.cn 且只能填寫一個域名),我這里用的是一個二級域名。

然后填寫提交信息并直接提交合并。

3、域名解析。這里我用的是萬網的域名,我們做下面的解析操作:

  • 記錄類型:CNAME
  • 主機記錄: home
  • 記錄值:awesomes-cn.github.io

接下來你就可以直接訪問 http://home.awesomes.cn/ 來替代 http://awesomes-cn.github.io 了,是不是很簡單。

注意:

我這里是將 home.awesomes.cn 解析到了個人主頁項目上,訪問 http://home.awesomes.cn/emoji 仍然是可以訪問到 emoji 項目主頁的。

但是如果我把這個 CNAME 文件創建到 emoji 項目的 gh-pages 分支下(即直接解析 emoji 項目主頁),那么訪問 http://home.awesomes.cn 就相當于訪問 http://awesomes-cn.github.io/emoji 了,而個人主頁項目也就訪問不到了。

總結

一般情況下,我們都會選擇使用 頁面自動生成器來創建項目主頁,因為更加方便和美觀。但在此之前我們應該通過手動操作來知曉其中的原理。

上面的例子都使用了我的項目來做諒解,實際使用過程中請將對應的地方換成自己的項目名。

官方文檔: https://help.github.com/categories/github-pages-basics/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!