Git達人教你搞懂GitHub基礎觀念 | github儲存code
對開發新手而言,想要善用GitHub平臺提供的Git版本控管服務,上手不難,但隨著開發專案開始衍生分支版本後,不少新手往往很容易發生越管版本越混亂的窘況。開設過多場Git訓練課程,人稱保哥的多奇數位創意技術總監黃保翕觀察,新手最大的迷思是「直接將集中式版本控制軟體的觀念套用在Git上。」他建議,新手要先了解分散式版本控制系統的運作原理,否則「即便有再好的工具,如果觀念不清楚也沒有用。」比方說,主幹與分支合併時發生衝突,如果開發者不明就裡地硬下指令解決,就會造成版本控制的錯亂。黃保翕表示:「因為工具都是其次...
對開發新手而言,想要善用GitHub平臺提供的Git版本控管服務,上手不難,但隨著開發專案開始衍生分支版本後,不少新手往往很容易發生越管版本越混亂的窘況。開設過多場Git訓練課程,人稱保哥的多奇數位創意技術總監黃保翕觀察,新手最大的迷思是「直接將集中式版本控制軟體的觀念套用在Git上。」他建議,新手要先了解分散式版本控制系統的運作原理,否則「即便有再好的工具,如果觀念不清楚也沒有用。」
比方說,主幹與分支合併時發生衝突,如果開發者不明就裡地硬下指令解決,就會造成版本控制的錯亂。黃保翕表示:「因為工具都是其次,觀念才是根本。」
在Git工作流程中,使用者先從儲存庫下載某一版本到工作目錄,檔案修改完後,把檔案快照新增到暫存區域,執行提交後檔案就永久存到儲存庫內。圖片來源/Git
第一步 了解集中式和分散式版本控管的差異
傳統常見的集中式版本控制系統如CVS、Subversion及Perforce等,採主從式架構,開發專案所有版本的檔案集中儲存在單一臺伺服器上。而在開發者本機端的儲存庫上,則只會儲存最新版本的歷史紀錄,開發者如果想要提交(commit)新版本、查詢各版本差異或修改歷史紀錄,都要透過網路連到伺服器才能進行。當專案隨時間變得越來越龐大、版本越來越多,每一個人的每一個動作都要連上伺服器,就會影響了集中式版本控制系統的運作效率。
分散式版本控制系統則不同,黃保翕表示:「Git是分散式版本控制,每個人都有一份完整的本機儲存庫。」也就是說,除了在遠端儲存庫上如GitHub上,擁有專案各版本的完整程式碼之外,在每一個開發者本機端也還設計了一個本地端儲存庫(Repository),也儲存了所有變更過的檔案,以及專案各版本的歷史紀錄。遠端儲存庫並非是唯一一份,而是一個供多人同步專案資料用的共享版本。
透過本機端儲存庫上的這份完整專案,開發者不須透過網路便能提交新版本的程式碼到本機端儲存庫。等到需要將本機端儲存庫上資料同步到遠端儲存庫時,才需要使用網路,在Git上,這個指令就是推(Push)。所以,開發者進行版本控制的彈性變大,對網路的依賴也減低。
集中式版本控制系統的優點是,可以在遠端進行集中式的權限控管,限制使用...