Github就是免費的午餐

對於從事計算機軟件行業的人來說,Github的大名恐怕是無人不知。不過,絕大數的開發者只是將Github當作尋找免費解決方案和代碼的社區,而不是一個高效的優秀助手。

Github的一個最主要的功能就是代碼託管,託管的意思不僅僅是存儲,還包括版本管理、多人協作等功能。幾年以前,在Github上只有“public”的代碼是免費的,但是現在,“private”代碼託管功能也免費提供給大家。除此之外還有一大堆既免費又好用的的功能,說“Github是免費的午餐”可不是一句忽悠人的話。

1. 省心省事的託管

代碼這東西不同於其他的文本,因為一段時間不見面你就很可能不認識它了。除了辨識度比較低,它還數量巨大,並且常常更新換代,這給維護代碼帶來了巨大的挑戰。這時,我們就會需求一種解決代碼管理問題的方案,以前那些古老的方案已經越來越不適應這個時代,於是Git橫空出世。

Github就是免費的午餐 | 第74期

Github託管的代碼庫

現在習慣使用Git的朋友可能覺得離線情況下添加代碼是一件自然而然的事情,不過對於那些古老的工具而言,這可是一個魔術一樣的技巧。很多人會覺得Git太過複雜,雖然這個說法表明了一些事實,但對於日常使用而言,高階的命令基本用不上。那麼,常用的命令有哪些呢?

(1) git clone

如果你沒見過這個命令的用法,可以到Github上隨便找一個項目點擊“下載”按鈕,就可以看見了。所以,這個命令的作用就是從遠程倉庫中下載代碼的。如果有個人告訴你,他知道git clone的18種用法,千萬別搭理他,因為那些東西對你基本沒啥用。

(2) git pull

下載下來的倉庫就放在本地,如果遠程倉庫更新了怎麼辦?這時,就可以使用git pull拉取新的代碼。

(3) git add 和 git commit

很多情況下,除了閱讀代碼,我們還會添加或者刪除一些代碼。在修改了文件之後,使用git add .將那些修改加入的暫存區,確認沒有問題,再使用git commit -m "feature info"將修改提交到代碼庫持久保存

。如果你還想搞清楚其中的運作原理可以去搜索對應的講解教程,但是很顯然,在絕大多數情況下,你都不需要知道那麼多。

(4) git push

以上的git commit指令只是將代碼提交到了本地的代碼庫,如果你還需要將代碼託管在服務器上,就是用git push origin master推送修改。

以上這五條命令就是最常用的命令,對於絕大多數的開發者,他們不需要跟別人合作,也不需要多個分支開發,他們只需要代碼備份和版本回溯。那麼,Github絕對是極佳的選擇。本地的計算機隨時都可能發生各種意外狀況,甚至有時還會不小心把代碼刪了。如果有一份遠程的倉庫存儲著這些代碼,那麼這些都不再是問題。有時如果新添加的功能存在缺陷,需要回溯到以前的版本,手動修改當然也是一個方法,但卻並不是一個好方法。因為這很可能會添加新的修改,並不完全是回滾到之前的代碼。

有的人會選擇自己搭建Git服務器來託管,但這對於個人而言實在不是一個好主意。除了需要耗費成本,穩定性也會是一個問題。把代碼託管的問題交給專業的團隊,不僅能夠減少出錯,而且還比較能夠扛住黑客的攻擊,特別是這些還都是免費的。

2. 便利的多人協作

實際上,在開發真正具有工程價值的大型程序時,基本不太可能由一個人單獨完成。在程序開發中加入各種角色也是保證項目順利進行的一種有效的方法。Github除了代碼倉庫,還可以添加組織和團隊來管理代碼倉庫。組織可以理解為公司,一個公司可以有多個團隊,有的負責研發,有的負責質量測試,有的負責文檔編寫,有的負責管理等等。每個團隊可以設置不同的權限,以保證工作有序和代碼安全。

多人協作常常需要代碼review,這樣做有不少好處,(1) 當局者迷,旁觀者清,另一個人往往能看出當事人看不到的bug;(2) 多個人都熟悉一段代碼才能形成討論的氛圍,這對於優化升級是很重要的;(3) 在一段代碼的維護人員出現意外或者休假時,其他人能夠接手相關的工作,既為項目增加保險,也能保證開發人員的適度休息。

有過review代碼經驗的朋友可能會知道這並不是一種愉快的經歷,所以,一個簡單好用的界面就顯得尤為重要,而Github就提供了這一功能。

Github就是免費的午餐 | 第74期

Github的代碼review頁面

除此之外,Github還提供了Issue功能。如果你對代碼中的某些問題有什麼看法可以提Issue,如果你有新的想法也可以提Issue,這成為了一種推進項目向前發展的動力

3. 免費的持續集成

Github推出了Actions功能,這一種持續集成(CI)的工具,也就是自動化完成編譯、測試、打包、發佈和部署的一種流程,而且是免費的。很難想象有人會土豪到送給你一臺計算機,但是Github就是這麼幹了。理論上你可以使用這臺虛擬機完成一些通用任務,但是強烈不建議這麼做,畢竟吃大戶這種事情總是容易一拍兩散的。

Github就是免費的午餐 | 第74期

Github提供的持續集成功能

這種自動化的持續集成工具可以避免開發者手動完成這些測試任務,降低質量測試人員的工作負荷,也為開發者剩下更多的時間和經歷關注真正的問題。

4. 自由的個人博客

現在有很多的博客平臺可供大家選擇,但是這些平臺無一例外都有嚴格的審核,而且排版和樣式都無法自己做主。如果你是一個嚮往自由又怕麻煩的人,那麼Github Pages無疑是目前一個很有吸引力的選擇。Github推出Pages功能使用jekyll將markdown文件編譯成靜態的HTML網頁文件,然後託管在Github的服務器上。我們在使用Pages功能時,可以自由地設置博客的表現形式和內容。如果你發現某個人的Pages博客頁面很適合你,那就可以直接下載下來,然後把markdown文件和對應的圖片替換成自己的就行。這種方式除了自由這種好處之外,還可以免除維護服務器的麻煩,因為所有的運行維護任務都有Github支持,而且還是免費的。

Github就是免費的午餐 | 第74期

一個簡單的Github Pages個人博客

提供了這麼多的優秀的功能和設計,而且還免費,真是長這麼大從來沒見過這樣的企業。不過這就是真真實實發生在我們的世界,如果不去好好利用這些資源,或者說不去佔佔便宜,還真有點對不起自己。

----------------------

題外:

頻道資源,可以私信關鍵字獲取。

Python編程問題諮詢,請發送關鍵字【諮詢】

獲取leetcode源代碼,請發送關鍵字【leetcode】

獲取書籍,請發送關鍵字【書籍】


分享到:


相關文章: