Git 分支與版本控制入門指南

更新日期: 2024 年 12 月 9 日

本文為 Git 指令基本介紹教學,第 2 篇

  1. Git 新手入門指南
  2. Git 分支與版本控制入門指南 👈 所在位置
  3. Git merge 與 rebase 初學者指南
  4. Git Reset:退回版本與分支拆分指南
  5. 解決 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 擁有兩個主要功能:

  1. 回到原本的版本:切換到某個特定版本的狀態。
  2. 切換特定的分支:從當前分支切換到另一個分支。

回到特定版本

可以使用以下指令切換到指定版本:

git checkout <版本編>

執行後,HEAD 指標會移動到該版本,讓專案恢復到此狀態。

切換分支

當需要在分支間切換時,可以使用:

git checkout <分支名>

這會將 HEAD 指向所選的分支。

Git 2.0 的功能拆分:switchrestore

為了避免功能混淆,從 Git 2.0 開始,git checkout 的功能被拆分成兩個獨立的指令:

  1. git switch:專門用於切換分支。
  2. git restore:專門用於還原檔案或版本。

Git Switch

用於切換分支的操作:

git switch <分支名>

範例:

git switch cat

Git Restore

用於還原檔案或回復到某個版本的狀態:

git restore <檔案名>

若要還原所有檔案,可以使用:

git restore .

注意: 使用 git restore . 時需小心,因為這會讓檔案回到上一次提交的狀態,未儲存的變更可能會丟失。


HEAD 與分支的關係

什麼是 HEAD

HEAD 是一個指標,代表當前分支的最新提交。

可以將 HEAD 想像成一張「正在工作的貼紙」,它隨時指向您目前操作的分支或提交。

分支與 HEAD 的互動

  1. 當分支被創建時 (git branch): 創建分支的過程不會影響 HEAD 的指向。此時新分支只是標記在當前 HEAD 所指向的提交上,並未改變工作分支。示意圖:
[提交 ID: 1234abcd] <- HEAD, master
  1. 當切換分支時 (git switch): 切換分支時,HEAD 將移動到目標分支。例如:
git switch new-branch
  1. 此時,HEAD 將指向 new-branch
[提交 ID: 1234abcd] <- master
            \
[提交 ID: 5678efgh] <- HEAD, new-branch
  1. HEAD 和分支的綁定:
    • HEAD 總是指向當前所在的分支。
    • 若直接操作 HEAD(如 git checkout <版本編號>),可能會進入「分離 HEAD 狀態」,此時 HEAD 不再綁定任何分支。

結語

掌握分支操作是熟練使用 Git 的關鍵。

透過分支,我們能有效管理不同的功能開發線,並輕鬆地在版本間切換與回復檔案狀態。

Similar Posts