Git 教程:重命名分支、刪除分支、查看分支作者
Git 的主要優勢之一就是它能夠將工作「分叉」到不同的分支中。
如果只有你一個人在使用某個存儲庫,分支的好處是有限的。但是,一旦你開始與許多其他貢獻者一起工作,分支就變得必不可少。Git 的分支機制允許多人同時處理一個項目,甚至是同一個文件。用戶可以引入不同的功能,彼此獨立,然後稍後將更改合併回主分支。那些專門為一個目的創建的分支,有時也被稱為 主題分支 ,例如添加新功能或修復已知錯誤。
當你開始使用分支,了解如何管理它們會很有幫助。以下是開發者在現實世界中使用 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、簽出存儲庫的主分支(例如 main
或 master
):
$ 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、簽出存儲庫的主分支(通常是 main
或 master
):
$ git checkout <central_branch_name>
2、列出所有分支(本地和遠程):
$ git branch -a
3、刪除遠程分支:
$ git push origin -d <name_of_the_branch>
查看遠程主題分支的作者
如果你是存儲庫管理員,你可能會有這個需求,以便通知未使用分支的作者它將被刪除。
1、簽出存儲庫的主分支(例如 main
或 master
):
$ git checkout <central_branch_name>
2、刪除不存在的遠程分支的分支引用:
$ git remote prune origin
3、列出存儲庫中所有遠程主題分支的作者,使用 --format
選項,並配合特殊的選擇器來只列印你想要的信息(在本例中,%(authorname)
和 %(refname)
分別代表作者名字和分支名稱):
$ git for-each-ref --sort=authordate --format='%(authorname) %(refname)' refs/remotes
示例輸出:
tux refs/remotes/origin/dev
agil refs/remotes/origin/main
你可以添加更多格式,包括顏色編碼和字元串操作,以便於閱讀:
$ git for-each-ref --sort=authordate
--format='%(color:cyan)%(authordate:format:%m/%d/%Y %I:%M %p)%(align:25,left)%(color:yellow) %(authorname)%(end)%(color:reset)%(refname:strip=3)'
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='%(authorname) %(refname)'
refs/remotes | grep <topic_branch_name>
熟練運用分支
Git 分支的工作方式存在細微差別,具體取決於你想要分叉代碼庫的位置、存儲庫維護者如何管理分支、 壓扁 、 變基 等。若想進一步了解該主題,你可以閱讀下面這三篇文章:
- 《用樂高來類比解釋 Git 分支》,作者:Seth Kenlon
- 《我的 Git push 命令的安全使用指南》,作者:Noaa Barki
- 《Git 分支指南》,作者:Kedar Vijay Kulkarni
via: https://opensource.com/article/22/5/git-branch-rename-delete-find-author
作者:Agil Antony 選題:lkxed 譯者:lkxed 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive