CodeGym /課程 /C# SELF /Git 介紹:為什麼需要版本控制

Git 介紹:為什麼需要版本控制

C# SELF
等級 26 , 課堂 0
開放

1. 沒有版本控制的問題:為什麼只是複製檔案是個壞主意

我們先從生活情境開始。想像你在做一個 C# 專案。一切都很順利,直到出現「實驗」階段。你決定改動某些東西,但又怕把穩定版弄壞。怎麼辦?當然是複製專案!

結果在你的磁碟上出現了這些傑作:

MyProject/
├── Main.cs
├── Main_backup.cs
├── Main_final.cs
├── Main_final2.cs
├── Main_tochno_final.cs
├── Main_tochno_tochno_final.cs

熟悉嗎?現在再想像有個朋友也加入到專案。他也喜歡複製檔案——只是用他自己的方式。怎麼判斷哪個是最新且可用的版本?怎麼知道誰改了什麼?如果實驗失敗了,怎麼回復?

沒有版本控制時:

  • 很容易丟失或弄混工作中的程式碼。
  • 無法「回退」到舊的版本。
  • 多人協作會很困難。
  • 混亂,並且害怕去做實驗。

這些問題正是版本控制系統要解決的——例如 Git

2. 為什麼開發者需要 Git?

Git — 是一個強大的版本控制系統,用來在軟體開發過程中追蹤原始程式碼的變更。它讓開發者可以保存不同版本的檔案,並協調多人一起在同一個專案上工作。

Git 的主要概念:

Repository

Repository(或叫「repo」)是儲存專案整個歷史的地方,包括所有的變更和檔案版本。

Commits

commit — 是專案的一個已保存狀態。每個 commit 包含哪些變更被做了、誰做的、何時做的資訊。Commits 形成專案的歷史,讓你可以回到任意以前的版本。

        gitGraph
        commit id: "1"
        commit id: "2"
        commit id: "3"
        commit id: "4"
        commit id: "5"
        commit id: "6"
    

每個 commit 就像專案的一張「快照」,連接成一條連續的變更歷史。

Branches

branch — 是獨立的開發線。預設情況下 Git 建立 main 分支。你可以為新功能或修正建立新分支,然後再把它們合併回主分支。

        gitGraph
        commit id: "1"
        commit id: "2"
        branch develop
        commit id: "3"
        commit id: "4"
        commit id: "5"
        checkout main
        commit id: "6"
        commit id: "7"
        merge develop
        commit id: "8"
        commit id: "9"
    

從主分支 main 分出 develop 分支做平行開發。工作完成後,從 develop 的變更會被合併回 main

3. Git 的主要命令(底層操作)

下面是透過 terminal 使用 Git 的一些主要命令。理解這些命令有助於掌握所有操作的底層運作。不過我們會採用 GUI 方式,教你如何用 IntelliJ IDEA 的圖形介面完成這些動作。把這些命令看成是「底層發生了什麼」。

命令 說明
git init 在當前目錄初始化一個新的 Git repository。
git clone 從 URL 克隆一個 repository 到新的目錄。
git add 把檔案加入 index,為下一次 commit 做準備。
git commit 把已準備的變更記錄到 repository 中。
git push 把本地 repository 的變更推送到遠端。
git pull 把遠端 repository 的最新版本拉取並更新當前分支。
git branch 顯示、建立或刪除分支。
git merge 把指定分支的變更合併到當前分支。

這些命令是使用 Git 的基本工具,讓你能管理程式碼變更、分支與合併,適用於各種規模的專案。

        sequenceDiagram
        participant 工作目錄
        participant 暫存區_Staging
        participant 本地儲存庫
        participant 遠端儲存庫

        工作目錄 ->> 暫存區_Staging: git add (準備)
        暫存區_Staging ->> 本地儲存庫: git commit (本地保存)
        本地儲存庫 ->> 遠端儲存庫: git push (發送到伺服器)
        遠端儲存庫 ->> 工作目錄: git pull (下載更新)
    

4. 三個程式碼儲存位置

使用版本控制時,你的程式碼大致會儲存在三個地方:

1. 遠端儲存庫

這是集中式儲存你程式碼的地方,通常在像 GitHubGitLabBitbucket 這樣的服務上。它們提供集中式的程式碼儲存,是協作的基礎,也常用於自動化流程,例如 build、test 和 deploy。

2. 本地儲存庫

本地儲存庫是你電腦上的個人程式碼複本。在這裡你可以離線執行所有 Git 操作(commit、branch、merge 等)。

3. 工作目錄

工作目錄是你正在編輯的專案檔案所在的位置。你可以在這裡查看和修改檔案、新增功能或修正錯誤。

這些組件一起構成了管理原始程式碼的強大基礎設施,讓開發者能管理專案歷史並協作。

5. GitHub — 你的作品集

GitHub是領先的程式碼託管平台使用 Git 作為版本控制系統。自 2008 年成立以來,它迅速成為全球開發者的重要工具。

GitHub 讓使用者建立 repositories 來管理專案、追蹤程式碼變更並與其他開發者協作。對現代開發者來說,在 GitHub 上的個人檔案是重要的作品集,可以展示給潛在雇主看。

6. 在 GitHub 上建立你的第一個 repository

步驟 1. 打開 https://github.com 並註冊帳號。

步驟 2. 點擊 New repository 按鈕來建立新的 repository。

步驟 3. 設定 repository 的參數:

  1. Repository 名稱: 想一個有意義的名稱。
  2. 公開還是私有: 對於教學專案建議選「Public」,這樣別人可以看到。
  3. Add a README file: 一定要勾選。README 是專案的「門面」。
  4. Add .gitignore: 點選下拉選單並選擇適合你語言的範本。
  5. Choose a license: 可以跳過。
  6. 點擊 Create repository

步驟 4. 恭喜,你的第一個遠端 repository 已建立!

7. 安裝與設定 Git

雖然可以透過命令列學習 Git(如影片所示),但在日常工作中 99% 的開發者更常使用整合在開發環境裡的工具。我們的目標是教你以專業人士的方式工作。

JetBrains 系列的現代 IDE(像是 Java/Kotlin 的 IntelliJ IDEA、C# 的 Rider 或 Python 的 PyCharm)裡的 Git 介面幾乎相同。也就是說,學會在一個 IDE 中用 Git,你就能很容易把這些技能套用到其他 IDE。為此我們會用 IntelliJ IDEA 當作範例。你在這裡看到的操作在你喜歡的 IDE 中看起來和運作方式都會一樣。

要在電腦上使用 Git,首先需要安裝 Git。如果你使用 IntelliJ IDEA,當系統找不到 Git 時,IDE 通常會提示你自動安裝。我們建議接受這個建議——這是最簡單的方式。

關閉當前專案,選擇 File > Close Project,然後點 Clone Repository

如果你想手動安裝,請使用官方網站: https://git-scm.com/downloads

8. 一點歷史:main vs master

以前 Git 的預設分支叫做 master。但在 2020 年,開發者社群與主要平台(包括 GitHub)轉而使用較中性的術語 — main

這點很重要,因為在一些舊文章或專案中你仍可能看到 master 的提法。在我們的講座和現代專案中,主要分支會用 main

想知道更多關於改名為 main 的資訊,可以看這些連結:

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION