HOWTO · Git

如何在 Git 上建立和使用分支

本教程介紹 Git 分支。我們將看到 Git 分支如何幫助你組織專案。

本頁內容

若要從目前的提交建立分支,請執行 git branch feature/login。這會建立分支,但讓你留在目前的分支上。若要在一個步驟中建立並切換到該分支,請使用 git checkout -b feature/login。Git 分支是指向提交的輕量指標,因此除非你指定其他起點,否則這兩個命令都會讓新分支從目前分支的提交開始。

使用 git branch 建立和檢視分支

執行不帶參數的 git branch 以列出本機分支。Git 會在目前檢出的分支前面放置一個星號。以下範例會建立一個暫時倉庫,新增一個提交,建立一個主題分支,並列出本機分支。星號標記目前檢出的分支。Shell 在結束時會刪除該暫時倉庫。

set -eu
tmp="$(mktemp -d)"
trap 'rm -rf "$tmp"' EXIT
git -C "$tmp" init -q -b main
git -C "$tmp" config user.name Example
git -C "$tmp" config user.email example@example.com
printf 'starter\n' > "$tmp/README.md"
git -C "$tmp" add README.md
git -C "$tmp" commit -qm "Add starter file"
git -C "$tmp" branch feature/login
git -C "$tmp" branch
  feature/login
* main

執行 git branch feature/login 可建立分支而不切換。若要重新命名目前的分支,請使用 git branch -m new-name;若要重新命名另一個本機分支,請使用 git branch -m old-name new-name。-m 選項會重新命名分支;它不會在不同位置之間移動分支。

對於已合併的本機分支,git branch -d feature/login 會要求 Git 刪除它,而當 Git 認為它未合併時會拒絕。使用 git branch -D feature/login 時,應僅限於你打算移除本機分支參照,即使其提交可能未在其他地方合併。以這種方式刪除分支不會清除仍可透過其他參照到達的提交,但只能從該分支到達的提交最終可能會被 Git 的清理移除。

這些命令影響本機分支。若要從名為 origin 的遠端刪除分支,請執行 git push origin --delete feature/login。這不會刪除你的本機分支;如有需要,請另行移除它。

使用 git checkout -b 建立分支並切換到該分支

使用 git checkout existing-branch 切換到已存在的分支。使用 git checkout -b feature/login 在目前提交處建立新分支並立即切換到該分支。如果名稱已存在,Git 會報告它無法建立該分支;請選擇另一個名稱或切換到現有分支。

如果未提交的編輯可以安全攜帶,它們在你切換分支時會留在工作樹中。Git 不會提交這些編輯,也不會將它們專門保存到新分支上。它們保持未提交狀態,並且可能出現在你切換到的分支上。如果切換會覆寫某個變更,Git 會停止並要求你先解決衝突。當你需要將工作分開保留時,請在切換前提交工作或使用 git stash。

切換後,執行 git status 以確認目前的分支,並查看哪些檔案仍保持已修改或未追蹤狀態。例如,在 git checkout -b feature/login 之後,git status 應標識 feature/login;任何相容的編輯在你提交、stash 或捨棄它們之前,仍會以工作樹變更的形式出現。