搜尋此網誌

2012年10月2日 星期二

使用Git的好處

在Open Source的世界使用Git早已是很稀鬆平常的事,但是在企業界卻不一定。因為有規模的企業中,多半早已經有正在運作中的原始碼管理工具,如果要完全轉換至Git並不是一件太容易的事,例如如何保留原本所有的Commit歷史紀錄、工作流程會如何變動、員工知識訓練等等都是很麻煩的事。 

目前公司正在評估轉換至Git的效益,其實我自己在開始學習用Git的時候,也覺得為何需要introduce新的工具,SVN不就很好用了嗎?但是真正使用一段時間之後,覺得Git還是具有比其他VCS工具優秀的地方,在此我就自身的經驗記錄一下使用Git的好處:
  1. 本地操作:因為Git本身會把Central Repo所有的資料包含分支等等資訊都Clone一份在本地,因為所有的操作都可以在本地進行,不管是做Commit、Branch等都可以在本地做,不用怕會影響到Central Repo,所以可以完全按照自己的喜好或需求在本地Commit或是開分支,等做完要做的事情之後,再一次性的push到server上。不用像使用其他VCS工具時,有類似的需求時,只好自己copy/paste一份檔案保存。

    補充:包含查看log history的速度也很快,因為工作上特別是團隊工作,常常需要看看之前人家改了哪些東西,速度快的話節省很多時間。
  2. 開分支非常容易:Git中開分支並非像其他VCS一樣是把檔案全部複製一份,而只是多fork出一個指標,等到檔案真正被更動之後,才會真正把檔案複製出來做修改。所以Overhead很低,速度也很快。因此可以盡情的按照需求開分支而不用擔心浪費儲存空間或是很慢。
  3. 離線操作:其實這點跟本地操作是一件事情,但這邊特別強調"離線",也就是說就算在工作當時沒有網路,你一樣可以在local做commit、做分支。所以如果在家工作,也不需要時時連著VPN才能做事,完全可以先commit在local,等到公司再一次push。
  4. 更多彈性的操作:Git提供了如cherry pick等等的操作,可以用更靈活的方式控制或Merge code。
  5. 跨repo的merge:因為Git的特性是以hash code來辨別檔案、Commit記錄等等,因此即使是兩個不同的Repo,只要有檔案以及Commit的紀錄,Git仍然有辦法做Merge。因為這個特性,使得在Github中創造出更多的玩法例如Fork and Merge。
目前暫時想到這些,以後有想到別的在補充。對於尚未使用VCS的團隊,我個人完全建議使用Git為管理工具,比目前我用過的其他VCS都要好用許多。即使是企業,我也會覺得就算不能馬上轉換,也最好有計畫,帶來工作效率的提升絕對是非常明顯的。