Git 教程:重命名分支、刪除分支、查看分支作者
掌握管理本地/遠(yuǎn)程分支等最常見的 Git 任務(wù)。
Git 的主要優(yōu)勢之一就是它能夠?qū)⒐ぷ鳌胺植妗钡讲煌姆种е小?/p>
如果只有你一個(gè)人在使用某個(gè)存儲庫,分支的好處是有限的。但是,一旦你開始與許多其他貢獻(xiàn)者一起工作,分支就變得必不可少。Git 的分支機(jī)制允許多人同時(shí)處理一個(gè)項(xiàng)目,甚至是同一個(gè)文件。用戶可以引入不同的功能,彼此獨(dú)立,然后稍后將更改合并回主分支。那些專門為一個(gè)目的創(chuàng)建的分支,有時(shí)也被稱為主題分支topic branch,例如添加新功能或修復(fù)已知錯(cuò)誤。
當(dāng)你開始使用分支,了解如何管理它們會很有幫助。以下是開發(fā)者在現(xiàn)實(shí)世界中使用 Git 分支執(zhí)行的最常見任務(wù)。
重命名分支
有時(shí)候,你或許會錯(cuò)誤地命名了一個(gè)分支,或者你會想要在內(nèi)容合并到主分支后,使用同一個(gè)分支在不同的錯(cuò)誤或任務(wù)之間切換。在這種情況下,重命名主題分支就會很有幫助。
重命名本地分支
1、重命名本地分支:
$ git branch -m <old_branch_name> <new_branch_name>
當(dāng)然,這只會重命名你的分支副本。如果遠(yuǎn)程 Git 服務(wù)器上存在該分支,請繼續(xù)執(zhí)行后續(xù)步驟。
2、推送這個(gè)新分支,從而創(chuàng)建一個(gè)新的遠(yuǎn)程分支:
$ git push origin <new_branch_name>
3、刪除舊的遠(yuǎn)程分支:
$ git push origin -d -f <old_branch_name>
重命名當(dāng)前分支
當(dāng)你要重命名的分支恰好是當(dāng)前分支時(shí),你不需要指定舊的分支名稱。
1、重命名當(dāng)前分支:
$ git branch -m <new_branch_name>
2、推送新分支,從而創(chuàng)建一個(gè)新的遠(yuǎn)程分支:
$ git push origin <new_branch_name>
3、刪除舊的遠(yuǎn)程分支:
$ git push origin -d -f <old_branch_name>
使用 Git 刪除本地和遠(yuǎn)程分支
為了保持存儲庫的整潔,通常建議你在確保已將內(nèi)容合并到主分支后,刪除臨時(shí)分支。
刪除本地分支
刪除本地分支只會刪除系統(tǒng)上存在的該分支的副本。如果分支已經(jīng)被推送到遠(yuǎn)程存儲庫,它仍然可供使用該存儲庫的每個(gè)人使用。
1、簽出存儲庫的主分支(例如 main 或 master):
$ git checkout <central_branch_name>
2、列出所有分支(本地和遠(yuǎn)程):
$ git branch -a
3、刪除本地分支:
$ git branch -d <name_of_the_branch>
要刪除所有本地主題分支并僅保留 main 分支:
$ git branch | grep -v main | xargs git branch -d
刪除遠(yuǎn)程分支
刪除遠(yuǎn)程分支只會刪除遠(yuǎn)程服務(wù)器上存在的該分支的副本。如果你想撤銷刪除,也可以將其重新推送到遠(yuǎn)程(例如 GitHub),只要你還有本地副本即可。
1、簽出存儲庫的主分支(通常是 main 或 master):
$ git checkout <central_branch_name>
2、列出所有分支(本地和遠(yuǎn)程):
$ git branch -a
3、刪除遠(yuǎn)程分支:
$ git push origin -d <name_of_the_branch>
查看遠(yuǎn)程主題分支的作者
如果你是存儲庫管理員,你可能會有這個(gè)需求,以便通知未使用分支的作者它將被刪除。
1、簽出存儲庫的主分支(例如 main 或 master):
$ git checkout <central_branch_name>
2、刪除不存在的遠(yuǎn)程分支的分支引用:
$ git remote prune origin
3、列出存儲庫中所有遠(yuǎn)程主題分支的作者,使用 --format 選項(xiàng),并配合特殊的選擇器來只打印你想要的信息(在本例中,%(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 獲取特定遠(yuǎn)程主題分支的作者:
$ git for-each-ref --sort=authordate \
--format='%(authorname) %(refname)' \
refs/remotes | grep <topic_branch_name>
熟練運(yùn)用分支
Git 分支的工作方式存在細(xì)微差別,具體取決于你想要分叉代碼庫的位置、存儲庫維護(hù)者如何管理分支、壓扁squashing、變基rebasing等。