Linux中國

Git 教程:重命名分支、刪除分支、查看分支作者

掌握管理本地/遠程分支等最常見的 Git 任務。

Git 的主要優勢之一就是它能夠將工作「分叉」到不同的分支中。

如果只有你一個人在使用某個存儲庫,分支的好處是有限的。但是,一旦你開始與許多其他貢獻者一起工作,分支就變得必不可少。Git 的分支機制允許多人同時處理一個項目,甚至是同一個文件。用戶可以引入不同的功能,彼此獨立,然後稍後將更改合併回主分支。那些專門為一個目的創建的分支,有時也被稱為 主題分支 topic branch ,例如添加新功能或修復已知錯誤。

當你開始使用分支,了解如何管理它們會很有幫助。以下是開發者在現實世界中使用 Git 分支執行的最常見任務。

重命名分支

有時候,你或許會錯誤地命名了一個分支,或者你會想要在內容合併到主分支後,使用同一個分支在不同的錯誤或任務之間切換。在這種情況下,重命名主題分支就會很有幫助。

重命名本地分支

1、重命名本地分支:

$ git branch -m <old_branch_name> <new_branch_name>

當然,這隻會重命名你的分支副本。如果遠程 Git 伺服器上存在該分支,請繼續執行後續步驟。

2、推送這個新分支,從而創建一個新的遠程分支:

$ git push origin <new_branch_name>

3、刪除舊的遠程分支:

$ git push origin -d -f <old_branch_name>

重命名當前分支

當你要重命名的分支恰好是當前分支時,你不需要指定舊的分支名稱。

1、重命名當前分支:

$ git branch -m <new_branch_name>

2、推送新分支,從而創建一個新的遠程分支:

$ git push origin <new_branch_name>

3、刪除舊的遠程分支:

$ git push origin -d -f <old_branch_name>

使用 Git 刪除本地和遠程分支

為了保持存儲庫的整潔,通常建議你在確保已將內容合併到主分支後,刪除臨時分支。

刪除本地分支

刪除本地分支只會刪除系統上存在的該分支的副本。如果分支已經被推送到遠程存儲庫,它仍然可供使用該存儲庫的每個人使用。

1、簽出存儲庫的主分支(例如 mainmaster):

$ git checkout <central_branch_name>

2、列出所有分支(本地和遠程):

$ git branch -a

3、刪除本地分支:

$ git branch -d <name_of_the_branch>

要刪除所有本地主題分支並僅保留 main 分支:

$ git branch | grep -v main | xargs git branch -d

刪除遠程分支

刪除遠程分支只會刪除遠程伺服器上存在的該分支的副本。如果你想撤銷刪除,也可以將其重新推送到遠程(例如 GitHub),只要你還有本地副本即可。

1、簽出存儲庫的主分支(通常是 mainmaster):

$ git checkout <central_branch_name>

2、列出所有分支(本地和遠程):

$ git branch -a

3、刪除遠程分支:

$ git push origin -d <name_of_the_branch>

查看遠程主題分支的作者

如果你是存儲庫管理員,你可能會有這個需求,以便通知未使用分支的作者它將被刪除。

1、簽出存儲庫的主分支(例如 mainmaster):

$ git checkout <central_branch_name>

2、刪除不存在的遠程分支的分支引用:

$ git remote prune origin

3、列出存儲庫中所有遠程主題分支的作者,使用 --format 選項,並配合特殊的選擇器來只列印你想要的信息(在本例中,%(authorname)%(refname) 分別代表作者名字和分支名稱):

$ git for-each-ref --sort=authordate --format=&apos;%(authorname) %(refname)&apos; refs/remotes

示例輸出:

tux  refs/remotes/origin/dev
agil refs/remotes/origin/main

你可以添加更多格式,包括顏色編碼和字元串操作,以便於閱讀:

$ git for-each-ref --sort=authordate 
    --format=&apos;%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)%(align:25,left)%(color:yellow) %(authorname)%(end)%(color:reset)%(refname:strip=3)&apos; 
    refs/remotes

示例輸出:

01/16/2019 03:18 PM tux      dev
05/15/2022 10:35 PM agil     main

你可以使用 grep 獲取特定遠程主題分支的作者:

$ git for-each-ref --sort=authordate 
    --format=&apos;%(authorname) %(refname)&apos; 
    refs/remotes | grep <topic_branch_name>

熟練運用分支

Git 分支的工作方式存在細微差別,具體取決於你想要分叉代碼庫的位置、存儲庫維護者如何管理分支、 壓扁 squashing 變基 rebasing 等。若想進一步了解該主題,你可以閱讀下面這三篇文章:

via: https://opensource.com/article/22/5/git-branch-rename-delete-find-author

作者:Agil Antony 選題:lkxed 譯者:lkxed 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國

    Linux中國

    DevOps 將去向何方?

    微軟、谷歌、亞馬遜、IBM 和甲骨文如今都在關注云上的 DevOps。這些大公司正在給企業提供 IT 自動化的服務。然而,DevOps 仍然在持續的演進中。DevSecOps、AIOps 和 NoOps 正在成為下一個流行詞。