CodeGym /課程 /JAVA 25 SELF /Git 入門:為什麼需要版本控制

Git 入門:為什麼需要版本控制

JAVA 25 SELF
等級 25 , 課堂 0
開放

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

先從一個真實情境開始。想像你正在開發自己的 Java 專案。一切都很順利,直到進入「實驗」時刻。你決定要改點什麼,但又擔心把可運作的版本弄壞。怎麼辦?當然是把專案複製一份!

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

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

熟悉嗎?現在再想像另一位朋友也加入了這個專案。他也喜歡複製檔案——只是用他自己的方式。要怎麼判斷哪一個是最新、可運作的版本?怎麼知道是誰改了什麼?如果實驗失敗,要如何把一切復原?

沒有版本控制時:

  • 很容易遺失或混淆可用的程式碼。
  • 無法「回到」舊版本。
  • 兩三個人一起協作變得困難。
  • 充滿混亂,對嘗試新點子心生畏懼。

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

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

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

Git 的基本概念:

儲存庫

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

提交

commit 是專案的已儲存狀態。每個 Git 提交都包含對專案做了哪些變更、由誰在何時完成等資訊。提交構成專案的歷史,並允許回到任何先前版本。

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

每次提交都是專案的一個「快照」,在前一次之後接續,形成連續的變更歷史。

分支

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 基本指令(底層在做什麼)

以下是在終端機使用 Git 的基本指令清單。了解哪些指令是各種操作的基礎很重要。不過我們將採用 GUI 方式,學會用 IntelliJ IDEA 的圖形介面來完成同樣的事。把這些指令視為「引擎蓋底下」在運作的東西。

指令 說明
git init 在目前目錄初始化新的 Git 儲存庫。
git clone 從 URL 複製儲存庫到新的目錄。
git add 把檔案加入暫存區以備下次提交。
git commit 將已暫存的變更提交到儲存庫。
git push 將本機儲存庫的變更推送到遠端。
git pull 從遠端儲存庫拉取最新內容並更新目前分支。
git branch 顯示、建立或刪除分支。
git merge 將指定分支的變更合併到目前分支。

這些指令是使用 Git 的核心工具,讓你能在各種規模的專案中管理程式碼變更、分支與合併。

        sequenceDiagram
        participant 工作目錄
        participant 暫存區 (Staging)
        participant 本機儲存庫
        participant 遠端儲存庫

        工作目錄 ->> 暫存區 (Staging): git add (暫存)
        暫存區 (Staging) ->> 本機儲存庫: git commit (在本機提交)
        本機儲存庫 ->> 遠端儲存庫: git push (推送到伺服器)
        遠端儲存庫 ->> 工作目錄: git pull (拉取更新)
    

4. 三個程式碼存放位置

當你為程式碼使用版本控制時,概括來說它會存放在三個地方:

1. 遠端儲存庫

這是集中存放程式碼的地方,通常託管在 GitHubGitLabBitbucket 等服務上。它們提供集中化的程式碼保存,並且是協作的基礎。遠端儲存庫也是自動化流程(如建置、測試與部署)的整合點。

2. 本機儲存庫

本機儲存庫是你在電腦上的個人副本。在這個儲存庫中,你可以在不連網的情況下執行所有 Git 操作(提交、分支、合併)。

3. 工作目錄

你電腦上的工作目錄包含專案目前的實際檔案,也就是你此刻正在處理的內容。你可以在這裡查看與修改檔案、加入新功能或修正錯誤。

這些元件共同提供了強大的原始碼管理基礎設施,讓開發者能管理專案歷史並順利協作。

5. GitHub——你的作品集

GitHub領先的原始碼託管網路平台使用 Git 版本控制系統。自 2008 年成立以來,它迅速成為全球開發者的關鍵工具之一。

GitHub 讓使用者能建立儲存庫來管理專案、控制並追蹤程式碼變更,並與其他開發者協作。對現代開發者而言,GitHub 個人檔案是作品集的重要一環,可以展示給潛在雇主。

6. 在 GitHub 建立你的第一個儲存庫

步驟 1. 前往 https://github.com 並註冊。

步驟 2. 按下按鈕 New repository 以建立新儲存庫。

步驟 3. 為儲存庫設定參數:

  1. 儲存庫名稱: 取一個有意義的名稱。
  2. 公開或私人: 對於學習專案,建議選擇「Public」,讓其他人可以看到。
  3. Add a README file: 務必勾選。README 是你專案的「門面」。
  4. Add .gitignore: 點選下拉清單並選擇你所用語言的範本。
  5. Choose a license: 可以略過。
  6. 按下 Create repository

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

7. 安裝與設定 Git

雖然可以透過主控台指令學 Git 的基礎(就像影片所示),但在日常工作中有 99% 的開發者使用整合在開發環境中的便利工具。我們的目標——是教你像專業人員一樣工作。

JetBrains 的現代 IDE 中用於操作 Git 的介面幾乎一致——不論是用於 Java/Kotlin 的 IntelliJ IDEA、用於 C# 的 Rider,或用於 Python 的 PyCharm——幾乎都相同。這代表只要學會在一個環境裡使用 Git,就能輕鬆套用到任何其他環境。因此我們會以 IntelliJ IDEA 作為通用示例。你在這裡看到的一切,在你喜歡的 IDE 中看起來與運作方式都幾乎相同。

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

選擇 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