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,本地和遠端倉庫均已更改。

廣告