電腦工作者都該學會的版控工具-Git

img

什麼是 Git ?

Git 是分散式版本控管系統 (Distributed Revision Control System),,又稱去中心化版本控制(Decentralized Version Control),是一種版本控管的方式,通常用於軟體開發,讓開發人員不必在意網路環境,以分散式版本控管的方式,共同開發出軟體。

雖然說 Git 大多用於軟體開發,但不管你是不是工程師,只要你是電腦工作者,需要每天大量修改、新增、刪除電腦檔案,那學會 Git 一定會對工作有幫助。 舉個例子來說,你可能是一名人資部門主管,你有一個叫做 resume 的目錄,裡面專門用來存放面試者的資料。

隨著時間的變化,一開始 resume 目錄裡只有 3 個檔案,過兩天增加到 5 個。不久之後,其中的 2 個被修改了,過了三個月後又增加到 7 個,最後又刪掉 1 個,變成 6 個。這每一個「resume目錄的狀態變化」,不管是新增或刪除檔案,亦或是修改檔案內容,都稱之為一個「版本」。而「版本控管系統」,就會幫你記錄這些所有的變化狀態,並且可以搭乘時光機一樣,隨時切換到過去某個「版本」時候的狀態。

簡單的說,Git 就像玩遊戲的時候可以儲存進度一樣。舉例來說,為了避免打頭目打輸了而損失裝備,又或是打倒頭目卻沒有掉落期望的珍貴裝備,你就會在每次去打頭目之前紀錄一下,以防發生預期外的狀況時,可以載入舊進度,再來挑戰一次。


為什麼要學習 Git ?

先問大家一個問題,大家平常怎麼整理或備份檔案 ?

我想對於大家來說,最傳統也是最方便的方式,便是使用「複製、貼上大法」,然後你可能就會看到像這樣的畫面 :

img

雖然用肉眼就可以知道每個「版本」的用途,但,你能一下子就講出在 resume-20180303 跟 resume-20180422 這兩個目錄有什麼不一樣的地方嗎 ? 又,那個 resume-bak 跟其他的目錄有什麼不同? 最麻煩的是,如果這個目錄是跟其他人一起共用,不管是有心無意,要是檔案被其他同事覆蓋掉了,也完全不知道該怎麼處理。

如果你在乎這些問題的答案,那使用「版本控制系統」就是一個很不錯的選擇。透過這樣的系統,可以清楚的紀錄每個檔案是誰在什麼時候加進來、什麼時候被修改或刪除。


Git 的優點

1. 免費開源

Git 是由 Linux 核心的作者 Linux Torvalds 在 2005 年為了管理 Linux 核心程式碼,僅花了10天所開發出來的,至目前已有十幾年的歷史了。除了可以免費使用外,整個 Git 的原始程式碼也可在網路上取得。

2. 速度快、檔案體積小

如果你是使用前面提到的「複製、貼上大法」,這些備份的目錄會很佔空間。而其他大部分的版本控管系統大多是紀錄每個版本之間的差異,而不是完整的備份整個目錄,所以整個目錄的大小就不會快速增加。

而 Git 特別的設計,在於它並不是紀錄版本的差異,而是紀錄檔案內容的「快照」 ( snapshot ) ,比起差異備份,更能有效節省硬碟空間。

3. 分散式系統

對我來說,這個可能是最大的優點了,在以往其他的版本控制系統,例如 CVS 或是 SVN 之類的集中式版控系統 ( Centralize Version Control),都需要有一台專用的伺服器,所有的更新都需要跟這台伺服器溝通。也就是說,萬一這台伺服器壞了,或是沒有網路連線的環境,就沒辦法使用。

而 Git 是一款分散式的版控系統 ( Distributed Revision Control System ),雖然通常也會有共同的伺服器,但即使在沒有伺服器或是沒有網路的環境,依舊可以使用 Git 來進行版控,待伺服器恢復正常運作或是在有網路的環境再進行同步。而且,事實上在使用 Git 的過程中,大多的操作也只需要在自己電腦本機上就能完成。


Git 的缺點

硬要說 Git 的缺點,大概就是易學難精吧。雖然 Git 的指令有非常多,而且有的指令有點複雜,但還好平常會用到的指令不會太多,根據「80/20 法則」,大概 20% 的指令就足以應付 80% 的工作。

除了在終端機 (或命令提示元) 環境的 Git 指令外,也有許多厲害的圖形介面工具,可以讓使用者不用敲打複雜的指令就可以享用 Git 強大的功能。




留言