Git、Github、Gitlab...... 相信許多程式開發者或多或少都有聽過這些名字,但對於他們是什麼,具體能做什麼,可能不太理解,老實說我以前也是僅會使用而已,並不太懂其中的原理。
直到某天睡醒,我突然很好奇 git 的運作方式,因此決定花些時間來好好來搞懂關於 git 的詳細用法!! 為了強迫自己吸收知識,我會把學習到的知識內容整理成比較趣味的文章~
如果你也想多加了解 git,歡迎繼續往下閱讀~
版本控制系統 Version Control System
正式介紹 git 前,一定要先提到的就是所謂的「版本控制系統」,版本控制系統用來追蹤檔案的變更,讓使用者可以清楚每個階段檔案都變動了些什麼,也可以自由的切換到想回到的版本。如果覺得概念不好理解,可以想像成是古早單機遊戲的存檔點,每玩到一個階段就存一個檔,可以自由地回到存檔點,也不用擔心之後玩一玩發生意外一切都要重頭來。
版控系統又分為集中式與分散式:
集中式版本控制系統
集中式版控系統會將歷史資料儲存在一個中央伺服器,所有想要取得檔案歷史紀錄的人都需要連上,這也代表,如果沒網路,就沒辦法進行版本控制,更危險的是!! 如果這個伺服器壞掉,歷史資料就會遺失。

集中式版本控制系統
分散式版本控制系統
理解集中式後,分散式的概念應該也很好猜,就是每個參與的開發者都有完整的歷史資料,如果我的資料遺失了,可以從其他的開發者手中取回歷史資料,而且即使在沒有網路的狀態下 git 一樣能在自己的電腦不斷保存歷史,這也是與集中式版控系統最大的差別之一。

分散式版本控制系統
Git 是甚麼
所以 git 究竟是什麼呢? Git 是在你電腦裡幫你紀錄檔案變化的一種分散式版本控制系統,而 Github 與 Gitlab 是基於 Git 的網頁平台。
在其他文章中看到的「本地儲存庫 local repository」指的就是 Git 在你電腦裡管理的儲存庫,而 Github 與 Gitlab 的儲存庫通常會稱作「遠端儲存庫 remote repository」,所以其實他們是不一樣的東西唷! 千萬不要搞混了~
Git 可以幫我們紀錄檔案每次的變化,也可以隨時回到過去的版本。
聽起來好像很厲害,但什麼時候會需要用到?
舉個🌰
我有個朋友寫了一個功能完整的程式,完成後他又想要在裡面新增內容,為了避免改壞原本的程式碼,不懂版本控制工具是什麼的我朋友,採取了(他想像中)比較安全的做法,就是複製一份一樣的檔案保存,接著再修改新的檔案。後來他成功改好了程式碼,他的第一份程式碼叫做 file1,而新增一點內容的第二份程式碼被他稱作 file1_v2,有時候他也會把這樣的檔案取作 file2 之類的。 接著三個月過去了,我朋友想要把寫好的程式拿出來用,可是他卻忘記了這兩份檔案的差別是什麼,怎麼辦啦QQ
「要是有個好東西可以幫我記錄我修改的內容,我就不需要複製那麼多檔案、不用擔心改壞內容、也不會搞不清楚他們到底差在哪裡!! 如果能讓我隨意地依照心情切回不同的版本就更好了>_<」
是的,這就是 git 的作用,恭喜你成功掌握了 git 的入門的用法了。
總結
透過上述我朋友的小故事,相信大家已經稍微理解 git 的使用情境了,讓我們快速整理一下這篇文章的重點:
- 版控系統用來紀錄檔案的變更,分為集中式與分散式。
- git 是一種分散式版控系統,而 github 與 gitlab 是基於 git 的網路平台。
- git 會記錄檔案的變更資料,誰在什麼時間改了那些內容通通都會記住。
- git 也可以讓你快速且自由的切換到儲存過的任何時間點。
其實 git 還有很多厲害的花招,但是對於剛開始接觸的人來說,第一篇先簡單了解概念就好了~ 在後續的文章,我也會慢慢提到更進階的用法!
下一篇文章會帶大家一起安裝 Git,並實際開始操作,打造自己的程式時光機!!










