如何在 Git 中重命名分支、删除分支和查找分支的作者

成为管理本地和远程分支的最常见 Git 任务的专家。
7 位读者喜欢这篇文章。

Git 的主要优势之一是能够将工作“fork”到不同的分支中。

如果您是唯一使用存储库的人,那么分支的好处并不明显,但是一旦您开始与许多其他贡献者一起工作,分支就至关重要。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. 检出存储库的中心分支(例如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>

使用 Git 查找远程主题分支的作者

如果您是存储库管理器,您可能需要这样做,以便您可以通知未使用分支的作者应删除该分支。

1. 检出存储库的中心分支(例如mainmaster

$ 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 分支的工作方式存在细微差别,具体取决于您要 fork 代码库的点、存储库维护者如何管理分支、压缩、变基等等。以下是关于此主题的三个进一步阅读的文章

标签
Avatar
Agil 拥有超过 6 年的技术作家经验,专门为软件产品制作准确、清晰和简洁的文档。他有能力向各种受众(包括开发人员、工程师和最终用户)传达技术思想。

3 条评论

你好!

学习关于 Git 的知识总是很有趣!这次也是如此!!:) 非常感谢!
我已经将这篇文章翻译成西班牙语发布在我的博客上

http://victorhckinthefreeworld.com/2022/05/23/sci-hub-elimina-las-barreras-en-el-camino-de-la-ciencia/

问候!

哎呀!链接错了

https://victorhckinthefreeworld.com/2022/05/21/como-renombrar-una-rama-o-borrar-una-rama-en-git/

回复 ,作者:victorhck

© . All rights reserved.