[git]從svn轉git的一些基本觀念和sourcetree工具的使用教學

介紹一些使用git和svn的一些概念上的不同,還有如何使用工具來幫忙快速上手git

前言

最近公司正在很積極的要把原本的svn換成git,而筆者使用git雖然也用了好幾年了,不過都是簡單自己的使用,雖然在這段時間也有曾努力去了解和學習git的觀念,但在工作職場上始終都還是在使用svn,不過既然公司確定要使用了,那筆者也就把一些比較可能使用到的情境說明一下,並且把一些從同事身上看到的,由svn轉來git會比較轉不過來的觀念,順便解釋一下希望能幫助到一些同樣需要從集中式版控轉到git的讀者。

git與svn的觀念差異

svn其實就是一個集中式版控,所有管理版控都集中在某台伺服器上面,所有專案成員針對此伺服器作commit and update,來針對檔案作版控,如果有分不同環境的話,就會在主幹開分支(Branch),並且重新把檔案checkout出來在別的資料夾,那之後要merge的時候,則是從以前的commit log去挑出來要上線的版本做merge。

git則稱之為是分散式版控、分散式版控、分散式版控,說三次因為真的很重要,何謂分散式版控呢?也就是你最主要管理版控的地方就是本地,這個觀念非常的重要,就算是git flow也是針對本地版控,更新檔案下來有衝突改的也是本地,只要你不要push上伺服器上面,怎麼樣都是你電腦硬碟自個兒的事情而已,所以只要你做了push上伺服器之後,大家也會一併接受你本地的所有變更,所以我們只要沒上到伺服器之前,我們想在本地做任何修改都是允許的,不過有一些鐵則必須得了解的,就是如果我們已上到伺服器的版本,不要針對已push的版本做任何修改,以免造成伺服器上版控大亂。

為何選擇source tree

接下來雖然會講到git的一些名詞概念,不過操作方面都會使用sourcetree,如果對打指令的方式比較有興趣,也可以參考連猴子都能懂的git(https://backlogtool.com/git-guide/tw/),這邊要特別介紹一下為何要用source tree,現在能管理git的工具非常多,除了微軟派的visual studio和vs code之外,更有小烏龜或git extension和gitkarken等等非常多的選擇,不過我個人比較不喜歡在ide裡面使用或安裝太多工具或外掛,相信大家都知道安裝越多東西開發工具多多少少都會越變越慢,而且source tree也是一個老牌子了,很多公司都是指名使用這套工具,就算不足之處頂多直接打指令也可以,而以我個人經驗來說source tree幾乎能完全使用大部份場景了,所以筆者個人目前都是以source tree來做最主要的git管理工具。

影片分享

而因為操作工具真的比較好的方式還是錄影片,而我也從來沒有錄過影片,不過為了方便自己回顧,也可以真正的把一些觀念和操作都帶給各位,所以我個人就只好硬著頭皮上了,而錄好的影片也已經分享到我的youtube帳號了,有興趣想了解source tree的使用方式,再請參考下方的影片連結囉。

https://www.youtube.com/watch?v=vlzHSSRhzTU&feature=youtu.be