GitHub入門與實踐

Welcome to GitHub

什麼是GitHub

GitHub是一個同性交友社區,不好意思,拿錯劇本了。GitHub在Wikipedia上的介紹是這樣的:

GitHub是一個通過Git進行版本控制的軟體源代碼託管服務,由GitHub公司(曾稱Logical Awesome)的開發者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails編寫而成。

簡單來說,GitHub是一個讓開發者與他人共享代碼的地方。其公司總部位於美國加利福利亞州舊金山,其logo是一隻名為Octocat的可愛章魚貓,就是下面的這個小萌萌了↓

當然,她還有可能是這樣的??

GitHub與Git有什麼區別

Git其實是一種版本控制的協議,定義了一個版本控制的各種操作,類似的還有SVN/CVS,但是和SVN/CVS不同的是,Git採用的是分散式的方式,並不需要伺服器端的軟體。

而GitHub是基於Git協議的一個網路代碼倉庫,也就是說,GitHub上公開的軟體源代碼都是有Git進行管理,但是GitHub除了提供Git倉庫的託管服務外,還為開發者或團隊提供了一系列的功能(後面會詳細說明),例如在線瀏覽、搜索和管理、社交等等,幫助開發者和團隊高效率、高品質的編寫代碼。

(好吧,說了這麼多拗口的話,簡單來說,你可以將Git與GitHub的關係理解為「魔獸爭霸」和「對戰平台」的關係。)

GitHub的使用情況

截止到2015年,GitHub已經有超過九百萬註冊用戶和2110萬代碼庫。事實上已經成為了世界上最大的代碼存放網站和開源社區。全世界每時每刻都有開發者在使用它。

GitHub提供的主要功能

  • Git倉庫

    一般情況下,當我們註冊了GitHub賬戶之後,我們免費新建任意個GitHub提供的Git倉庫。如果需要建立只對特定用戶或自己公開的私有倉庫,則需要按照Plans for all workflows支付每月最低7美元的費用。

  • Organization

    通常情況下,如果只是個人使用,個人賬戶就足夠了。但如果是團隊或者公司,建議使用Organization賬戶,它可以統一管理賬戶和許可權,同時也能統一支付一些費用。

    和個人賬戶類似,如果只是創建公開倉庫,創建Organization賬戶是不收費的。因此,對於小型開發團隊而言,Organization或許是個不錯的選擇。

    下面是Google Organization賬戶信息:

  • Issue

    Issue用於對有一個任務或問題進行追蹤和管理。這有點類似於BUG管理系統(例如Mozilla公司出品的Bugzilla)。在GitHub上,我們每次創建一個Pull Request時,都會要求創建一個Issue。

    每次將要對功能進行更改或者修正時,都應該創建一個Issue(除非是有特殊的原因,最好使用英文,如果使用中文,項目所有者還需要耗費時間和精力替你翻譯,而這本是你應該完成的事物),討論或者修正都圍繞這個Issue為中心進行。只要查看Issue,就能了解和這個更改有關的信息,並以此進行管理。

    在Git的提交信息中寫上Issue的ID(例如「#7」),GitHub就會自動生成從Issue到對應提交的鏈接。另外,只要按照特定的格式描述提交信息,還可以關閉Issue。

    下面是google-gson項目的一個Issue。

    ps:請不要在Issue中討論和項目無關的內容(例如灌水、無意義的聊天等),也不要連著發帖,因為你每發布一次無意義的內容,項目的作者和關注(Watch)這個項目的人就會收到一封垃圾郵件。所以,請共同維護GitHub的良好氛圍。

  • Wiki

    通過Wiki功能,任何人都可以隨時對一篇文章進行更改並保存,因此可以多人共同完成一篇文章。該功能常用於在開發文檔或手冊的編寫中。

    Wiki也是作為Git倉庫進行管理的,改進的歷史記錄也會被切實保存,使用者可以放心的改寫,並且支持克隆到本地進行編輯。

    這是開源大戶square的項目okhttp的wiki首頁:

  • Pull Request

    當我們fork了別人的代碼,並做了相應的修改之後,就可以Pull Request向倉庫的所有者提出申請,請求對方合併自己修改之後的代碼。發出Pull Request之後,對方的管理人員可以查看Pull Request的內容及其中包含的代碼更改。

    同時,你可以利用GitHub提供的對Pull Request和源代碼差別評論的功能,以行為單位對代碼進行討論。

    square的另外一個項目retrofit的Pull Request:

  • Gist

    有時候我們並不需要為了一個小小的代碼片段而開啟一個倉庫,這個時候Gist就派上用場了。Gist是一個有趣的服務,最簡單的功能就是分享代碼片段,但她的功能並不局限於此,Gist並不僅僅為開發者服務,任何人(允許匿名)都可以利用她分享內容。

  • GitHub Pages

    GitHub Pages 是免費的靜態空間服務,可以架設靜態網站,包括靜態博客。我們可以利用GitHub Pages搭配Hexo或者Jekyll等靜態博客系統搭建我們自己的博客。

    這是我利用GitHub Pages和Hexo搭配的博客:

    Tonnys Blog

GitHub上的一些知名項目

  • Linux - Linux kernel source tree.(43k star, 無窮個貢獻者)
  • Git
  • node - Node.js JavaScript runtime.
  • rails - Ruby on Rails.

彩蛋

GitHub,同性交友,真人約會,排解寂寞,釋放壓力。百分百真人,誰沒事會去註冊GitHub啊,通過「Follow」交到同性好友;通過Issue和PR互動和交流。So, f**k, oh no, follow me on GitHub。

本文同步發表於TonnyL的簡書-GitHub入門與實踐, GitHub入門與實踐 - 知乎專欄, TonnyL的博客-GitHub入門與實踐, 轉載請註明作者和出處。
推薦閱讀:

Github 歡迎所有的持續集成工具
開啟 Github Pages 自定義域名 HTTPS 和 HTTP/2 支持?
從 0 開始學習 GitHub 電子書免費送

TAG:GitHub | 开源 | 软件 |