前言
本系列 Git 教學將著重在 VS Code 與 Git 的操作、整合與專案管理。
什麼是版本控制?
版本控制是隨著時間用來追蹤文件的差異與變化,並提供儲存與回朔到特定版本的功能。
像是 Google Sheet、微軟 Microsoft 365 (Word、PowerPoint、Excel) 都提供歷史版本檔案的回朔:
藉由軟體所提供的歷史紀錄,我們可以不需要將檔案複製進行備份,形成多個檔案的結果。
版本控制如果是文字檔案,還可以比對檔案之間的差異。像是說明 test.txt 從 A 版本變為 B 版本新增或刪除了哪些東西,這就是版本控制的目的。
而要管理像是文字檔案(txt, c, py, js, md 等…),繪圖檔案(psd, ai)、模擬檔案等文件。
可以透過常見主流且為業界標準的軟體為:Git
與 Subversion(SVN)。
兩者皆為開源、免費。可以在私人電腦或是公司電腦上進行安裝並管理文件、專案。
什麼是 Git?
Git 是一個分布式版本控制系统(version control system,VCM)。
每個成員都可以將完整的程式碼從遠端倉庫(remote repo(sitory))複製(clone)到本地端(local repo)。
當多個不同成員進行 clone 後,每個成員的本地電腦端都會擁有自己的一個副本進行管理。
若成員 A 開始修改與編輯後,可再進行推送(push)到遠端倉庫。
成員 B 由於當時 clone 時,還沒有 A 的修改,所以可能會發生同一個檔案上的衝突(conflict)。
此時 B 要與 A 進行溝通,進行差異上的合併(merge)、或是進行重置基準(rebase)等操作。
以 AdGuardHome 開源軟體為例,可以看到開發者會針對每個新版本會開啟新的分支(branch)進行管理,並且由多個不同使用者進行提交程式碼。
其中在提交程式碼並修復新的 bug 可能會開新的分支,最終由主開發人員評估後,進行 merge 的操作。
什麼是遠端倉庫?
我們在本地端初始化一個新的 repo 後,可以將本地端的內容 push 到遠端倉庫。
遠端倉庫的主要功能是儲存程式碼
,為位於網路上的伺服器。
並可能提供一些額外的功能像是:
- 程式碼審查(code review)
- 問題追蹤(issue tracking)
- 持續整合(continuous integration,CI)
- 持續交付(continuous delivery,CD)
- 建立 wiki 文件說明
- 項目管理
- 權限管理
- 可視化進度(visualize progress)
- 等…
目前主流的遠端倉庫主要有:
GitHub(微軟):
- 提供了程式碼審查、問題追蹤、持續整合等功能。
- 在個人開發者和企業中都廣受歡迎。
- 提供免費和付費服務計劃,用戶可以根據需要選擇不同的計劃。
GitLab:
- 可以在公司內部架設,也有雲端服務可用。
- 強調 DevOps 和 CI/CD 整合,提供了完整的 DevOps 平台。
- 提供社區版(免費)和企業版(付費)等不同版本。
Azure DevOps(微軟):
- 不僅是程式碼管理工具,還是一個完整的 DevOps 平台,包括程式碼管理、CI/CD、專案管理等功能。
- 深度整合了 Azure 雲端服務。
- 提供免費和付費計劃,企業和團隊可以選擇適合自己需求的方案。
上述平台,會根據使用人數、是否付費,提供不同層級的服務。
在個人開發者中,使用最多的遠端倉庫就是 GitHub 了。
中大型企業往往不想將程式碼放到 GitHub,會考慮自己架設 GitLab 放在公司內部的伺服器上。
而某些外國企業在合作上,甚至是需要執行 DevOps 進行程式碼追蹤,會另外要求使用 Azure DevOps 進行程式碼管理與敏捷開發。
開始使用 Git
選擇指令介面還是圖形界面?
在開始使用 Git,首先要有好的 IDE 進行操作。
傳統上的 IDE 就是 cmd + vim/nano 等文字編輯器。藉由命令提示字元、一行一行的輸入指令。
git merge 時遇到檔案衝突,必須在指令模式下找到衝突的程式碼、編輯、存檔、git add後,最終沒衝突再 git commit。
相比之下,圖形界面(GUI)則簡化了這些複雜的指令輸入過程。透過點擊操作,可以輕鬆解決許多問題。
對我來說,大部分的操作都是透過 GUI 進行,因為它更直觀且易於操作。不過有些特定的操作、或是制式化的操作可能使用指令模式來處理會更快。
我建議熟悉兩種操作方式,就可以更靈活地使用 Git。
所以電腦請先安裝好:
- Git
- VS Code
- Windows Terminal(選用)
- PowerShell(選用)
- Clink(選用)
詳細的安裝方式可以參考 Awesome Windows - 必備生產力軟體安裝與說明 進行安裝。
我最初開始學 Git 時,使用的遠端倉庫為 GitHub。
Github 提供了
GitHub Desktop
,這套軟體少了蠻多重要的功能,因此不建議使用。還有像是
SourceTree
、TortoiseGit
等其他 GUI,雖然是 Git 官方所推薦,但相較於 VS Code 的擴充性還是差了一大截所以也不推薦。
註冊 GitHub
在 GitHub 上進行註冊,取得一個免費放程式碼的空間。
- 無限制的公共/私人存儲庫
- 自動安全和版本更新
- 每月 2,000 分鐘的 CI/CD
- 公共存儲庫免費
- 500 MB的套件存儲
- 公共存儲庫免費
- 問題和專案
- 社區支援 GitHub Copilot 訪問
無論是架設技術部落格或是存放個人的程式碼都綽綽有餘。
至於註冊方法可以參照官方一步一步進行操作。整體來說不會很困難。
使用 Git 的迷思
害怕使用 Git
萬物皆可 Git,只要檔案不要超過 100 MB(經驗法則)。除了程式碼外,也可以用來追蹤像是 .md 或是圖片檔案。
Git 太複雜,難以入門
在網路上,常常會將 Git 與 SVN 進行比較,並聲稱 Git 很複雜。
實際上,初次接觸 Git 時,你只需要記住基本操作: git commit,並在提交時附上簡單的說明。隨著時間的推移,你會逐漸熟悉其他操作,如合併(merge)或重整(rebase)分支等。
如果擔心操作出錯,可以創建一個新的分支(例如 TEST)來進行操作。當你確定操作無誤後,可以刪除原始分支(如 main),並將測試分支(TEST)重新改名為為主分支(main)。這樣做可以大大減少犯錯的可能性。如果 TEST 分支在 merge 卡住、出現問題時,可以輕鬆地刪除它。
需要購買相關書籍嗎?
不需要! (但是,如果想看紙本書籍也不是不行。)
現在網路資訊那麼發達,指令忘了網路上查一查就好了。
更多免費的資源,官方也早已撰寫好電子書籍 - Pro Git book。
如果真的有問題,問問 ChatGPT 可能都還比較快。
也因此看書學習 Git 是不需要的。
如果要學習 Git,一些推薦的相關資源可以參考:
結論
下一章節會說明如何使用 VS Code 進行 Git 與專案整合。