Git 分支與版本控制入門指南
更新日期: 2024 年 12 月 9 日
本文為 Git 指令基本介紹教學,第 2 篇:
- Git 新手入門指南
- Git 分支與版本控制入門指南 👈 所在位置
- Git merge 與 rebase 初學者指南
- Git Reset:退回版本與分支拆分指南
- 解決 Git 衝突 (Conflict) 的完整指南
Git 是一個強大的版本控制工具,分支是其核心功能之一。
分支讓我們能同時開展不同的工作流程而互不干擾,方便版本管理與協作。
本文將為新手介紹 Git 的分支操作與相關指令,幫助您理解分支的基本概念及使用方法。
什麼是分支?
在 Git 中,分支並非像樹狀結構那樣複雜的概念,更像是一張貼紙 (label),用來標記某個提交 (commit) 的狀態。
初始分支 master
當初始化一個 Git 儲存庫時,系統會自動建立一個名為 master
的預設分支:
git branch
顯示如下:
* master
*
表示目前所在的分支。HEAD
是指向當前分支的指標,像是一張「正在工作的貼紙」。
創建與管理分支
新增分支
假設我們想建立一個新的分支:
git branch cat
此時,新的分支 cat
會基於當前的 master
分支建立,並標記到目前的提交點。
刪除分支
如果不需要該分支,可以用以下指令刪除:
git branch -d cat
切換分支
當有多個分支時,我們可以切換到其他分支:
git switch cat
切換後,HEAD
將指向新的分支。
回到特定版本或救回檔案
在 Git 2.0 之前,git checkout
擁有兩個主要功能:
- 回到原本的版本:切換到某個特定版本的狀態。
- 切換特定的分支:從當前分支切換到另一個分支。
回到特定版本
可以使用以下指令切換到指定版本:
git checkout <版本編號>
執行後,HEAD
指標會移動到該版本,讓專案恢復到此狀態。
切換分支
當需要在分支間切換時,可以使用:
git checkout <分支名稱>
這會將 HEAD
指向所選的分支。
Git 2.0 的功能拆分:switch
和 restore
為了避免功能混淆,從 Git 2.0 開始,git checkout
的功能被拆分成兩個獨立的指令:
git switch
:專門用於切換分支。git restore
:專門用於還原檔案或版本。
Git Switch
用於切換分支的操作:
git switch <分支名稱>
範例:
git switch cat
Git Restore
用於還原檔案或回復到某個版本的狀態:
git restore <檔案名稱>
若要還原所有檔案,可以使用:
git restore .
注意: 使用
git restore .
時需小心,因為這會讓檔案回到上一次提交的狀態,未儲存的變更可能會丟失。
HEAD
與分支的關係
什麼是 HEAD
?
HEAD
是一個指標,代表當前分支的最新提交。
可以將 HEAD
想像成一張「正在工作的貼紙」,它隨時指向您目前操作的分支或提交。
分支與 HEAD
的互動
- 當分支被創建時 (
git branch
): 創建分支的過程不會影響HEAD
的指向。此時新分支只是標記在當前HEAD
所指向的提交上,並未改變工作分支。示意圖:
[提交 ID: 1234abcd] <- HEAD, master
- 當切換分支時 (
git switch
): 切換分支時,HEAD
將移動到目標分支。例如:
git switch new-branch
- 此時,
HEAD
將指向new-branch
:
[提交 ID: 1234abcd] <- master
\
[提交 ID: 5678efgh] <- HEAD, new-branch
HEAD
和分支的綁定:HEAD
總是指向當前所在的分支。- 若直接操作
HEAD
(如git checkout <版本編號>
),可能會進入「分離HEAD
狀態」,此時HEAD
不再綁定任何分支。
結語
掌握分支操作是熟練使用 Git 的關鍵。
透過分支,我們能有效管理不同的功能開發線,並輕鬆地在版本間切換與回復檔案狀態。