Skip to content

Git 基礎

簡介

Git 是一種分散式版本控制系統,廣泛用於軟體開發中管理源代碼的歷史。本教學文件將引導您瞭解 Git 的基本工作流程和命令,幫助您開始使用 Git 來管理您的項目。

目標

  • 理解 Git 的工作原理
  • 學習基本 Git 命令,包括提交(commit)、分支(branch)、合併(merge)
  • 建立一個基本的 Git 工作流程

Git 作業流程

  1. 工作目錄(Working Directory):您正在工作的實際文件。例如,您正在編輯一個名為 readme.md 的文件。這個文件就在您的工作目錄中。

  2. 暫存區(Staging Area):存放即將提交的文件變更。例如,您已經完成了 readme.md 文件的更改,並使用 git add readme.md 命令將其添加到暫存區。對於不同的檔案,可以各別添加到暫存區,而暫存區可以保存多個檔案的更改,每個檔案的更改都是獨立管理的。

  3. 本地儲存庫(Local Repository):保存已提交變更的地方。例如,您使用 git commit -m "Update readme.md" 命令將更改提交到本地儲存庫。如果沒有先使用 git add 命令將更改添加到暫存區,則 git commit 命令將不會提交任何變更。若想將所有已追蹤文件的更改(不包括新文件或刪除的文件)從工作目錄直接提交到本地儲存庫,則可以使用 git commit -a -m "Update readme.md" 命令。對於新增檔案或刪除檔案的更改,必須先使用 git addgit rm 命令將其添加或移除自暫存區,然後再使用 git commit 命令提交到本地儲存庫。

  4. 遠端儲存庫(Remote Repository):保存在遠端伺服器上的儲存庫。例如,您使用 git push origin main 命令將更改推送到遠端儲存庫。

graph LR
    A[Working Directory] -->|git add| B[Staging Area]
    B -->|git commit| C[Local Repository]
    C -->|git push| D[Remote Repository]

基本命令

  • 初始化儲存庫(git init)

    • 用於在現有目錄中創建一個新的 Git 儲存庫。
    • 命令:git init
  • 文件狀態檢查(git status)

    • 檢查當前目錄的狀態,查看哪些更改已暫存、哪些未暫存。
    • 命令:git status
  • 添加變更(git add)

    • 將文件變更添加到暫存區。
    • 命令:git add <file>git add .
  • 提交變更(git commit)

    • 將暫存的更改提交到儲存庫。
    • 命令:git commit -m "<commit message>"
  • 創建分支(git branch)

    • 創建一個新的分支。
    • 命令:git branch <branch-name>
  • 切換分支(git checkout)

    • 切換到不同的分支。
    • 命令:git checkout <branch-name>
  • 合併分支(git merge)

    • 指定分支 <branch-name> 合併至目工作區的分支中。
    • 命令:git merge <branch-name>

基本命令範例

以下是 Git 的基本命令及其使用範例,這些命令涵蓋了從獲取遠端最新更改到推送更改到遠端儲存庫的整個流程:

  1. 獲取遠端最新更改

    • 命令:git fetch origin
    • 功能:從遠端儲存庫(如 GitHub)獲取最新的更改,但不會影響您的本地分支。
  2. 創建新的功能分支

    • 命令:git branch feature-003 接著 git checkout feature-003
    • 或者合併命令:git checkout -b feature-003
    • 功能:創建並切換到新的功能分支 feature-003
  3. 編輯源代碼

    • 步驟:在 feature-003 分支上進行開發。
  4. 提交更改

    • 命令:git commit -m "Finish feature-003"
    • 功能:將您在 feature-003 分支上的更改提交。
  5. 切換回主分支並更新

    • 命令:git checkout main 接著 git merge origin/main
    • 功能:確保您的 main 分支是最新的,並包含遠端最新的更改。
  6. 合併功能分支到主分支

    • 命令:git merge feature-003
    • 功能:將 feature-003 分支的更改合併到更新後的 main 分支。
  7. 推送更改到遠端

    • 命令:git push
    • 功能:將合併後的 main 分支推送到遠端儲存庫。
sequenceDiagram
    title Git 工作流程示例
    participant Dev as Developer
    participant Local as Local Repo
    participant Remote as Remote Repo

    Dev->>Remote: git fetch origin
    Note over Dev,Remote: 從遠端獲取最新更改
    Remote->>Local: 更新本地遠端分支資訊
    Note over Remote,Local: 本地儲存庫同步更新
    Dev->>Local: git checkout -b feature-003
    Note over Dev,Local: 創建新的功能分支
    Dev->>Dev: 編輯源代碼
    Note over Dev: 在 feature-003 分支上進行開發
    Dev->>Local: git commit -m "Finish feature-003"
    Note over Dev,Local: 提交更改
    Dev->>Local: git checkout main
    Note over Dev,Local: 切換到主分支
    Local->>Remote: 獲取 origin/main 的最新資訊
    Dev->>Local: git merge origin/main
    Note over Dev,Local: 合併遠端主分支的最新更改
    Dev->>Local: git merge feature-003
    Note over Dev,Local: 將 feature-003 分支合併到當前分支
    Dev->>Remote: git push
    Note over Dev,Remote: 推送更改到遠端

這些步驟提供了一個完整的工作流程,幫助您有效地使用 Git 進行版本控制和協作。這些命令是 Git 日常使用中最基礎和最重要的部分。

結語

Git 的基礎知識是學習軟體開發的關鍵一步。理解和掌握這些基本命令將幫助您更有效地管理您的代碼。隨著經驗的積累,您將準備好進行更進階的 Git 操作。