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、簽出儲存庫的主分支(例如 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 分支的工作方式存在細微差別,具體取決於你想要分叉程式碼庫的位置、儲存庫維護者如何管理分支、壓扁squashing、變基rebasing等。
- 13 個非常有用的 Python 程式碼片段,建議收藏!
- [科普文] 淺談 Function Programing 程式設計正規化
- 什麼是Pulsar函式流處理應用?
- Flask vs Django: 該如何選擇Python框架?
- 十個用圖表解釋JavaScript 閉包的面試題
- 漫談 CSS 方法論
- 超詳細的日常開發必備神器 HttpUtil
- 理想中的介面自動化專案你瞭解嗎?
- 讓我們一起聊聊 Django 框架
- Spring中欄位格式化的使用詳解
- 2022 年面向開發人員的七個優秀 Java IDE
- 開發一個禁止刪除 Namespace 的控制器
- Web1.0到Web3.0,網際網路是如何演進的?
- DDD概念複雜難懂,實際落地如何設計程式碼實現模型?
- 學會一招!如何利用 pandas 批量合併 Excel?
- 超硬核!11個非常實用的 Python 和 Shell 拿來就用指令碼例項!
- 還在用requests寫爬蟲嗎?這個庫效率提高一倍!
- 分散式程式設計工具Akka Streams、Kafka Streams和Spark Streaming大PK
- 工具類如何獲取到 Spring 容器中的 Bean?
- code-review之前端程式碼優化彙總