Git 基礎
簡介
Git 是一種分散式版本控制系統,廣泛用於軟體開發中管理源代碼的歷史。本教學文件將引導您瞭解 Git 的基本工作流程和命令,幫助您開始使用 Git 來管理您的項目。
目標
- 理解 Git 的工作原理
- 學習基本 Git 命令,包括提交(commit)、分支(branch)、合併(merge)
- 建立一個基本的 Git 工作流程
Git 作業流程
-
工作目錄(Working Directory):您正在工作的實際文件。例如,您正在編輯一個名為
readme.md
的文件。這個文件就在您的工作目錄中。 -
暫存區(Staging Area):存放即將提交的文件變更。例如,您已經完成了
readme.md
文件的更改,並使用git add readme.md
命令將其添加到暫存區。對於不同的檔案,可以各別添加到暫存區,而暫存區可以保存多個檔案的更改,每個檔案的更改都是獨立管理的。 -
本地儲存庫(Local Repository):保存已提交變更的地方。例如,您使用
git commit -m "Update readme.md"
命令將更改提交到本地儲存庫。如果沒有先使用git add
命令將更改添加到暫存區,則git commit
命令將不會提交任何變更。若想將所有已追蹤文件的更改(不包括新文件或刪除的文件)從工作目錄直接提交到本地儲存庫,則可以使用git commit -a -m "Update readme.md"
命令。對於新增檔案或刪除檔案的更改,必須先使用git add
或git rm
命令將其添加或移除自暫存區,然後再使用git commit
命令提交到本地儲存庫。 -
遠端儲存庫(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 的基本命令及其使用範例,這些命令涵蓋了從獲取遠端最新更改到推送更改到遠端儲存庫的整個流程:
-
獲取遠端最新更改:
- 命令:
git fetch origin
- 功能:從遠端儲存庫(如 GitHub)獲取最新的更改,但不會影響您的本地分支。
- 命令:
-
創建新的功能分支:
- 命令:
git branch feature-003
接著git checkout feature-003
- 或者合併命令:
git checkout -b feature-003
- 功能:創建並切換到新的功能分支
feature-003
。
- 命令:
-
編輯源代碼:
- 步驟:在
feature-003
分支上進行開發。
- 步驟:在
-
提交更改:
- 命令:
git commit -m "Finish feature-003"
- 功能:將您在
feature-003
分支上的更改提交。
- 命令:
-
切換回主分支並更新:
- 命令:
git checkout main
接著git merge origin/main
- 功能:確保您的
main
分支是最新的,並包含遠端最新的更改。
- 命令:
-
合併功能分支到主分支:
- 命令:
git merge feature-003
- 功能:將
feature-003
分支的更改合併到更新後的main
分支。
- 命令:
-
推送更改到遠端:
- 命令:
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 操作。