
- Git 入門
- Git - 首頁
- Git - 版本控制
- Git - 基本概念
- Git - 命令列
- Git - 安裝
- Git - 首次設定
- Git - 基本命令
- Git - 獲取幫助
- Git - 工具
- Git - 速查表
- Git - 術語
- Git 分支
- Git - 簡述分支
- Git - 建立新分支
- Git - 切換分支
- Git - 分支和合並
- Git - 合併衝突
- Git - 管理分支
- Git - 分支工作流程
- Git - 遠端分支
- Git - 追蹤分支
- Git - 變基
- Git - 變基 vs. 合併
- Git - 合併提交
- Git 操作
- Git - 克隆操作
- Git - 打標籤操作
- Git - 別名操作
- Git - 提交操作
- Git - 暫存操作
- Git - 移動操作
- Git - 重新命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - Patch 操作
- Git - Diff 操作
- Git - 狀態操作
- Git - 日誌操作
- Git - HEAD 操作
- Git - origin master
- Git 撤銷
- Git - 撤銷更改
- Git - Checkout
- Git - Revert
- Git - Reset
- Git - 恢復操作
- Git - Rm
- Git - Switch 操作
- Git - Cherry-pick
- Git - Amend
- 伺服器上的 Git
- Git - 本地協議
- Git - 智慧 HTTP 協議
- Git - 簡單 HTTP 協議
- Git - SSH 協議
- Git - Git 協議
- Git - 在伺服器上獲取 Git
- Git - 設定伺服器
- Git - 守護程序
- Git - GitWeb
- Git - GitLab
- Git - 第三方託管選項
- 分散式 Git
- Git - 分散式工作流程
- Git - 為專案貢獻程式碼
- Git - 維持專案
- 自定義 Git
- Git - 配置
- Git - Hook
- Git - 屬性
- Git - Init
- Git - Commit
Git - 分支管理
在前面的章節中,我們學習瞭如何新增和刪除分支,本章將討論分支管理。
git branch 命令的用途遠不止新增和刪除分支。
不帶任何引數執行 git branch 命令時,它將顯示所有當前分支。
$ git branch auth-module * master feature-x
當前簽出的分支(即 HEAD 指向的分支)用星號 (*) 表示。
此狀態的提交將推進簽出的分支。
分支的最近提交
使用 git branch -v 檢視每個分支的最新提交。
$ git branch -v auth-module abcd123 Latest commit on auth-module * master 7a1b2c3d Latest commit on master feature-x e4f5g6h7 Latest commit on feature-x
分支篩選
使用 git branch 命令,我們可以使用 --merged 和 --no-merged 引數根據分支是否已合併到當前分支來過濾分支列表。
例如,我們可以執行以下命令來查詢哪些分支以前已合併到我們當前所在的 master 分支。
$ git branch --merged auth-module * master
使用 git branch --merged 檢視在將其合併到主分支 (master) 後,已合併的分支中是否列出了 auth-module。
使用 git branch -d,我們可以安全地刪除沒有 *(星號)符號的分支。
這表明它們的修改已合併到另一個分支中,保證刪除後不會丟失工作。
使用 git branch --no-merged 檢視仍有未合併到當前分支的更改的分支。例如:
$ git branch --no-merged feature-x
此命令顯示具有未合併更改的分支,例如 feature-x。此類分支無法使用 git branch -d 刪除,因為會顯示一個錯誤,指出該分支未完全合併。
$ git branch -d feature-x error: The branch 'feature-x' is not fully merged. If you are sure you want to delete it, run 'git branch -D feature-x'
使用 git branch -D feature-x 強制刪除此類分支,確保所有更改都永久刪除。
更改分支名稱
要更改分支名稱,例如將名為 fix-typos 的分支重新命名為 typo-fixes,同時保持其完整歷史記錄不變,請使用 git branch --move。這將本地重新命名分支。
$ git branch --move fix-typos typo-fixes
我們本地倉庫中的 fix-typos 現在稱為 typo-fixes。
要更新遠端倉庫,請推送重新命名的分支。
$ git push --set-upstream origin typo-fixes
使用此命令在遠端倉庫中更新新的分支名稱 typo-fixes。
檢查本地和遠端的分支名稱
$ git branch --all * typo-fixes main remotes/origin/fix-typos remotes/origin/typo-fixes remotes/origin/main
我們當前正在本地處理的分支是 typo-fixes,也可以從遠端倉庫訪問。
在遠端倉庫中,分支 fix-typos 仍以之前的名稱列出。請按如下方式從遠端倉庫中刪除分支的舊名稱:
$ git push origin --delete fix-typos
使用此命令刪除遠端倉庫中分支的舊名稱 fix-typos,只保留 typo-fixes。
現在,本地和遠端倉庫中的分支 fix-typos 都已成功重新命名為 typo-fixes。
更改 master 分支名稱
請按照以下步驟更新遠端倉庫中的本地 master 分支並將其重新命名為 feature-new
使用 git branch --move 重新命名本地分支
$ git branch --move master feature-new
上述命令將本地 master 分支重新命名為 feature-new。
要更新遠端倉庫,請推送重新命名的分支。
$ git push --set-upstream origin feature-new
使用新的分支 feature-new 更新遠端倉庫。
使用以下命令檢查本地和遠端的分支名稱
$ git branch --all * feature-new remotes/origin/HEAD -> origin/master remotes/origin/feature-new remotes/origin/master
我們當前的本地分支現在稱為 feature-new,它也存在於遠端倉庫中。
但是,在遠端倉庫中,之前的分支名稱 master 仍然存在。
在遠端更新並將其本地 master 分支重新命名為 feature-new 後。
其他協作者仍然可以繼續使用之前的 master 分支。
要完成此轉換,我們需要執行更多工。這些任務包括合併和關閉指向舊分支的拉取請求,以及升級依賴項、配置、指令碼、倉庫主機設定和文件引用。
一旦所有必要任務都已完成,並且我們確定 feature-new 分支與之前的 master 分支的功能相同,我們就可以安全地刪除 master 分支。
使用以下命令從遠端刪除分支的舊名稱
$ git push origin --delete master
遠端倉庫中的 master 分支已刪除,只保留 feature-new。
分支 master 現在已成功重新命名為 feature-new,本地和遠端倉庫均已更改。