Git 是什麼 ?
版本控管工具。
例如,有個需求一直在變化的情況
- 加一顆查詢按鈕
- index_old.html
- index.html
- 改一下按鈕文字
- index_old.html
- index_add_button.hmtl
- index.html
一旦異動的狀況很多時,就會發現你的檔案已經進入無限影分身狀態了。如果某天,你的主管說,上次我跟你說的那個某個移除的功能加回來,那你就勢必要在這堆檔案中東翻西找。東翻西找就算了,還可能找到那種小 bug 還沒有 fixed 過的片段,加回去後,bug 也跟著回來了!
為何需要使用 Git ?
傳統檔案管理的方式,有幾個較難克服的問題。
無法建立里程碑,只能用資料夾輸入日期當作記憶參照
每次修改,可能會建立一個資料夾然後命名為本次修改日期,因為檔案結構輸入中文並不是一個好的選擇,所以可能需要其他筆記來記錄,這次修改的情況。那會導致管理分散,或是忘記紀錄。
為了分別版本,會產生很多重複檔案
每次修改,建立日期資料夾後,為了確保架構完整性,會將整個資料複製進去。但是可能一百個檔案中,這次修改也就其中一個。所以日經月累,就產生了很多重複的檔案,不只佔據硬碟空間,也容易造成混亂。
恢復特定版本不容易
如同上面提到的,如果要恢復到某一個需求版本,勢必要花費一番功夫,而且恢復後也很難確保沒問題。
Git 好處
市面很也有其他的版本控管工具,為何要選擇 Git ?
免費、開源
整個原始碼都可以在網路上取得,免費使用,而且使用族群廣大,支援文件很多。
快速、檔案小
檔案管理方式的版本控管,每次新增一個版本就要搬移一次資料,當資料量大的時候,就會明顯產生等待與儲存成本。而 Git 使用快照 (Snapshot) 方式記錄,不只檔案小,且非常快速。
建立詳細的修改說明
每次的修改推送,都可以輸入詳細的說明,不需要再透過日期關連記憶法來回想。
分散式系統
相對於其他集中式版本控管工具需要連線到控制主機上才可以進行版本控管的方式。Git 使用分散式系統,會在本地建立一個版本控管系統,所以可以做到離線控管,連線推送的功能,畢竟不是時常都有網路環境。更重要的是,不會因為控制主機掛掉,你的控管就不見。