理解 Git 基礎和術語
介紹
Git 是一個分佈式版本控制系統,用於在軟體開發過程中追蹤源代碼的變更。在深入實際使用 Git 之前,了解構成 Git 工作原理基礎的基本概念和術語是至關重要的。
本教程將涵蓋每個 Git 用戶都應該理解的核心概念,為您提供有效使用 Git 的堅實基礎。
什麼是版本控制?
版本控制是一個記錄檔案隨時間變化的系統,使您可以在以後調用特定版本。它允許您:
- 追蹤代碼變更
- 與其他開發者協作
- 在需要時恢復到之前的版本
- 了解什麼發生了變化,何時變化,以及誰做了這些變化
- 同時維護專案的不同版本
Git 與其他版本控制系統
集中式 vs. 分佈式
傳統的版本控制系統(如 CVS、Subversion)是集中式的:
- 單一中央伺服器存儲所有版本
- 開發者從中央倉庫檢出檔案
- 如果伺服器宕機,協作停止
Git 是分佈式的:
- 每個開發者都有專案歷史的完整副本
- 可以離線工作並稍後同步變更
- 沒有單點故障
- 自然存在多個備份副本
Git 核心概念
倉庫 (Repo)
倉庫是存儲專案的空間。它包含:
- 所有專案檔案
- 完整的變更歷史
- 分支和標籤
- 配置設置
倉庫類型:
- 本地倉庫:在您的計算機上
- 遠程倉庫:在伺服器上(如 GitHub、GitLab)
工作目錄
工作目錄是您當前在計算機上處理專案檔案的資料夾。這是您編輯、創建和刪除檔案的地方。
暫存區 (索引)
暫存區是存儲有關下一次提交內容信息的檔案。它就像是您下一次提交的預覽。
可以將其視為購物車:
- 您將物品(變更)添加到購物車(暫存區)
- 準備好後,您結帳(提交)購物車中的所有內容
提交
提交是專案在特定時間點的快照。每個提交包含:
- 唯一標識符(哈希值)
- 作者信息
- 時間戳
- 描述變更的提交信息
- 指向前一個提交的指針
分支
分支是指向特定提交的輕量級可移動指針。它允許您:
- 同時處理不同的功能
- 在不影響主代碼庫的情況下進行實驗
- 與他人在單獨的功能上協作
默認分支通常稱為 main
或 master
。
HEAD
HEAD 是指向您當前工作的分支的指針。它告訴 Git 您當前正在查看哪個提交。
Git 工作流狀態
Git 檔案可以存在於三種主要狀態:
1. 已修改
- 檔案已更改但尚未提交
- 更改僅存在於您的工作目錄中
2. 已暫存
- 檔案被標記為將進入下一次提交
- 更改位於暫存區
3. 已提交
- 檔案安全地存儲在您的本地倉庫中
- 更改成為專案歷史的一部分
Git 的三個區域
理解這三個區域對於掌握 Git 至關重要:
工作目錄 → 暫存區 → 倉庫
(修改) (暫存) (提交)
工作目錄
- 您編輯檔案的地方
- 包含專案的一個版本
- 檔案可以被修改、添加或刪除
暫存區
- 存儲有關下一次提交內容的信息
- 也稱為"索引"
- 允許您精確控制每次提交的內容
倉庫
- Git 存儲元數據和對象數據庫的地方
- 包含專案的所有版本
- 專案根目錄中的
.git
資料夾
基本 Git 術語
克隆
在您的計算機上創建遠程倉庫的本地副本。
複刻
在像 GitHub 這樣的託管服務上創建他人倉庫的個人副本。
拉取
從遠程倉庫獲取更改並將其合併到您當前的分支中。
推送
將您的本地提交上傳到遠程倉庫。
合併
將不同分支的更改合併到單個分支中。
變基
將提交從一個分支移動或合併到另一個分支,創建線性歷史。
標籤
對特定提交的引用,通常用於標記發布點。
遠程
託管在伺服器上的倉庫版本,用於協作。
Origin
您克隆的遠程倉庫的默認名稱。
Upstream
您複刻的原始倉庫(在基於複刻的工作流中)。
Git 對象類型
Git 在其數據庫中將所有內容存儲為對象:
1. Blob (二進制大對象)
- 存儲檔案內容
- 不包含檔案名或目錄結構
2. Tree
- 表示目錄
- 包含對 blob 和其他 tree 的引用
- 存儲檔案名和權限
3. Commit
- 指向 tree 對象
- 包含元數據(作者、時間戳、消息)
- 引用父提交
4. Tag
- 指向提交
- 包含額外的元數據
- 通常用於發布
常用 Git 命令概述
以下是最常用的 Git 命令及其用途:
倉庫操作
git init
- 初始化新倉庫git clone
- 從遠程複製倉庫到本地git status
- 檢查工作目錄的狀態
基本工作流
git add
- 暫存更改以準備提交git commit
- 將更改保存到倉庫git push
- 將更改上傳到遠程倉庫git pull
- 從遠程倉庫下載更改
分支操作
git branch
- 列出、創建或刪除分支git checkout
- 切換分支或恢復檔案git merge
- 將一個分支的更改合併到另一個分支
信息命令
git log
- 查看提交歷史git diff
- 顯示提交、分支等之間的更改git show
- 顯示有關提交的信息
理解 Git 的最佳實踐
1. 以快照方式思考
Git 不存儲差異;它在每次提交時存儲整個專案的快照。
2. 提交成本低
不要害怕頻繁提交。小而集中的提交更容易理解和管理。
3. 使用有意義的提交信息
編寫清晰、描述性的提交信息,解釋更改了什麼以及為什麼更改。
4. 理解三種狀態
始終了解您的檔案處於哪種狀態:已修改、已暫存或已提交。
5. 儘早並經常使用分支
使用分支進行功能開發、實驗和錯誤修復。它們是輕量級的,易於使用。
總結
理解 Git 的核心概念和術語對於有效的版本控制至關重要。關鍵要點:
- Git 是分佈式的:每個副本都是完整的倉庫
- 三種狀態:已修改、已暫存、已提交
- 三個區域:工作目錄、暫存區、倉庫
- 提交是快照:不是差異,而是完整的專案狀態
- 分支是指針:指向提交的輕量級引用
- HEAD 追蹤位置:顯示您在專案歷史中的位置
理解了這些基本概念後,您就可以開始有效地使用 Git 了。下一個教程將指導您創建第一個 Git 倉庫並執行基本操作。
下一步
現在您已經了解了 Git 基礎和術語,可以繼續: