您找過以下的關鍵字

尚無搜尋紀錄

前言
過去二十年間,我曾經以單人或多人的團隊從事分散式開發,我第一份有收入的工作是在九零年代中期擔任網頁開發人員,當時是以直接更改檔名的方式維護檔案的版本,工作區裡經常充斥著各種特殊的延伸檔名,v4.old-er.bak都算是常見的了,這種方式很難追蹤進度。在某個特別有挑戰性的專案裡,我沿用在撰寫文件時所使用的印出後編輯的方式:先印出要處理的Perl腳本,用打洞機裝訂成冊,接著用不同顏色的筆標記腳本,最後透過文字編輯器抄錄更動(真希望當時有拍下來),版本的追蹤則是透過翻找活頁簿找出之前的版本。我對設定真正的版本控制系統(version control system,VCS)完全沒有概念,但我很小心的保留正確的成果,以便於在重構失敗時復原。

當我開始與其他開發人員合作時,不論是開放原始碼專案或是用戶端的工作,我從來不會是團隊裡的第一個開發人員,我加入時總是已經有設定好了的某種版本控制系統,一般都是CVS(Concurrent Versions System),這套系統用起來並不方便,但比起我之前使用的活頁簿,更適合分散各地的團隊成員使用。我很快的就了解記錄訊息(commit message)的價值,以及能夠輕易的回溯過去的進展所帶來的好處,這讓我更加注意其他人記錄到儲存庫的訊息,我不想讓其他人覺得我很隨便。

現在,我在多所社區大學教授網站開發,2004年,我第一次有機會在Humber College教授為期一年的版本控制系統,這是由Bernie Monette設計為期一年的課程。課程將學生分成幾個小組,各個小組必須在第一個學期提出網站的開發計畫;到了第二個學期,學生會重新分組,新的團隊必須依據上學期團隊的規劃建出網站;到了第三與最後一個學期會再次分組,而最後的工作是修正臭蟲並確保建出來的網站品質,每個團隊都必須使用版本控制系統記錄專案的成果。對於沒有任何程式開發經驗的學生們,因為版本控制系統經常會干擾正在進行的工作,因此他們大多有所怨言,但版本控制系統也讓他們更不容易覆寫其他同學的成果,這讓我學到如何讓學生使用一些與實際工作似乎不太有關係的工具。

那堂課之後的十年間,我學到許多教授版本控制的方法,以及成人教育的許多最佳實作,本書是我所累積的經驗成果,介紹使用版本控制系統與他人有效率作業的方法,建議各位從本書中找到最適合所在團隊的作法。沒有Git警察會出現在門口,衝著你吼叫「你錯了!」,也就是說,我會儘量解釋「Git式」的做事方法,提供各位作為建立新團隊,或是調整原有團隊作業流程的參考,「通用」的作業方式能夠協助先前使用過類似技術的新人,更快的上手。

本書並不適合所有人閱讀,比較適合事先規劃路徑,再依規劃前進的人。我希望本書能夠填滿現有Git資源與實際使用之間的空白,本書比起軟體的使用手冊更像是本團隊合作的手冊。要是各位的團隊(不論是一人或多人團隊)發現本書有不清楚的地方,希望能讓我知道(emma@gitforteams.com),要是你認為這本書對你有所幫助,也希望你能讓其他人知道。