三個簡單規則,助你養成Git和GitHub好習慣
作者:Ariel Camus
編譯:Bot
編者按:作為資料科學家,Git和GitHub想必是大家再熟悉不過的東西。其中,Git是現在最好用的版本控制軟體,GitHub是基於Git的程式碼託管庫。面對這樣使用廣泛的工具,學習自然是個無止境的過程,但新手該怎麼從一開始就養成好習慣呢?對於這個問題,Microverse的創始人Ariel Camus有話說。

本文不會涉及如何建立GitHub配置檔案和如何在本地推送Git這類具體問題,相反地,首先我們會解釋為什麼用好Git和GitHub非常重要,然後再介紹三個簡單規則,只要養成習慣,你就能從中受益無窮。
為什麼Git和GitHub如此重要?
如果你剛開始學計算機,那麼之後你的目標可能就是積累知識,畢業後獲得一份對口工作,比如軟體工程師、資料科學家等。在這種情況下。答案很簡單——
學習怎麼用Git和GitHub很重要,因為你工作後會頻繁用到它們的概率幾乎是99%,它們已經成為所有科技公司的標配。所以,如果你想從初級開發人員脫穎而出,你最好在Git和GitHub上多用點心。
高階開發人員的“高階”之處不是他們對程式語言的語法有什麼更高深的理解,而是他們在實際複雜大型專案上有更多經驗。
而如果只是個剛入行的新人,你是很難獲得這種體驗的。經驗來源於生活,來源於實踐。Git和GitHub正是你從實際專案中積累實際經驗的一種好途徑。
話說到這裡,可能你已經認同這些工具對找工作的裨益,那麼剩下的問題就是:為什麼Git和GitHub對公司也那麼重要?
簡而言之,Git這個工具允許團隊成員以非同步的方式高效、有效地為同一個專案提交開發程式碼。人與人之間能更好地協作,團隊能解決的問題自然也更大更復雜。這是一個分散式版本控制系統,它提供還原更改、建立程式碼分支、解決程式碼合併衝突等機制——這些都是非常有用的功能,可以幫助解決團隊每天都會遇到的常見問題。
而對於這些問題,Git是當前最好的解決方案。
另一方面,GitHub是通過Git進行版本控制的軟體原始碼託管服務,它為各類特定問題、常見問題提供解決方案,例如Code Review、pull reqeust、問題管理/bug跟蹤等。
說明:即便Git是大多數公司的首選版本控制工具,GitHub還是有一些強大的競品的,如GitLab和Bitbucket。事實上,之前GitHub被微軟收購時,已經有少數開發者把自己的程式碼庫遷移了出去,但現在GitHub還是主流。如果你已經熟練掌握怎麼用GitHub,你會發現自己用GitLab和Bitbucket也不會覺得手生。
Git和GitHub實踐建議:三個簡單規則

因為我個人是Microverse的創始人,所以這裡簡單提一下我的教學經驗。Microverse是一個面向軟體工程師的遠端培訓學校,在給學生上課時,我們不僅會教他們如何寫程式碼,也會提供大量指導和規劃,以便他們把課上學到的東西用於實踐。
我們要求學生做的第一件事是遵循以下三個簡單規則,成為Git和GitHub的專業使用者。但在具體展開前,請先問自己以下兩個問題:
- 你熟悉Git和GitHub嗎?如果不, ofollow,noindex">HubSpot上有一個值得閱讀的教程 。
- 您知道GitHub Flow是什麼嗎?如果不,先去 GitHub閱讀官方介紹 。
接下來就是這一節的重點:三個規則。
- 規則一:為每個新專案建立一個Git儲存庫。
- 規則二:為每個新功能建立一個新分支。
- 規則三:用pull reqeust把程式碼合併到Master分支。
規則一:為每個新專案建立一個Git儲存庫
第一條規則很簡單,但養成這個習慣不容易。每當你開始做一個新專案——投資組合、學習專案、競賽解決方案等——你就應該新開一個Git儲存庫,然後把它上傳GitHub。
一個專用的repo是為你編寫的每一行程式碼使用版本控制的第一步,而版本控制是各大公司處理實際專案的工作方式。因此今早學會這一點並養成習慣,會對你日後發展帶去幫助。
規則二:為每個新功能建立一個新分支
假設你正在開發一個投資組合專案(比如股票債券投資組合),而且想構建一個“聯絡我們”的元件,那麼你應該為這個新功能構建一個專用分支,並給他一個直觀有意義的名字(比如contact-me-section),然後把所有和這個元件有關的程式碼都存到裡面去。

如果你不知道什麼叫分支,可以去看之前推薦閱讀的GitHub Flow。
通過分支,你就能和其他團隊成員並行處理不同功能,同時保持每個功能的特定程式碼和其他功能的隔離。這種方法有助於篩查不穩定程式碼,確保合併程式碼的高效。
即便團隊裡就你一個人,養成這種習慣也有助於你理順思路,同時在日後的工作中建立起優勢。
規則三:用pull reqeust把程式碼合併到Master分支
預設情況下,在資料庫進行最初的提交後,Git會建立一個名為master的分支。但是, 你絕對不應該直接把更改內容新增進去 。相反地,你應該用上上面提到的功能分支,然後開啟一個新的pull reqeust,把功能分支程式碼和主分支程式碼合併。
在實際工作中,有些人可能會在你不知情的情況下檢視你的pull reqeust,並進行程式碼審查。同時,GitHub自己也會對你的程式碼做自動化測試,然後向你提交bug提醒。也就是說,如果你的程式碼和主分支程式碼之間存在衝突,它會報錯,而且這個錯不一定是你造成的,團隊中其他開發人員提交的更改也會通知你。
只有在確保自己的程式碼已經經過稽核、測試和批准的情況下,你才能合併pull reqeust,或者負責稽核的人會直接代勞。

如果這個專案只有你一個人,那你也要習慣於這麼做,因為這幾乎是每個開源專案的基本工作流程。如果你參與過其他人的專案,那麼踐行這三個規則也有助於你明確自己的貢獻。
也許看完上述內容後,你還有些困惑,但是現在你就可以開始慢慢牢記並養成這三個習慣。不要想著自己該“如何”這麼做,如果你能始終專注於“做什麼”和“為什麼”,你會發現整個過程會變得無比簡單和自然。