5

git 协同工作,怎样重命名、删除分支和查找分支的创建者呢?

 1 year ago
source link: https://www.51cto.com/article/721305.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

git 协同工作,怎样重命名、删除分支和查找分支的创建者呢?

作者:刘光录 2022-10-26 09:28:17
一旦你使用了git,那么分支将不可避免的会用到,了解如何管理分支也是非常有帮助的。本文分享使用git分支中常见的一些任务。
d7c9d8f570ae71252aa1755bfee262d89aaf58.jpg

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

当你与其他人协同工作的时候,分支尤其重要。git的分支机制是允许多人同时处理同一个项目,同一个文件。用户可以引入不同的功能部分,然后修改,并合并到主分支中。分支的创建多是由于某种目的或原因,比如添加新的功能,修复某个问题等。所以有时候分支会被称为主题分支。

一旦你使用了git,那么分支将不可避免的会用到,了解如何管理分支也是非常有帮助的。本文分享使用git分支中常见的一些任务。

重命名分支

如果你不小心将分支名称写错了,或者将分支中的内容已经合并到了主分支,并且该分支想继续使用,但用作改其他的bug,或者其他的任务,那么就需要对分支重新命名。

要重命名分支,可以执行如下步骤。

1)使用如下命令重命名本地分支:

$ git branch -m <old_branch_name> <new_branch_name>

如果重命名的是当前分支,那么当前分支名称(也就是old_branch_name)可以省略。当然,上述命令只是重命名分支的副本,也就是存在于你计算机中的本地分支。如果该分支存在于远程仓库,那么还需要将分支推送过去,需要执行下一步;

2)将重命名后的分支,推送至远程仓库(相当于在远程仓库新建了一个分支):

$ git push origin <new_branch_name>

3)删掉远程仓库中的旧分支

$ git push origin -d -f <old_branch_name>

在删除分支之前,一定要确保分支中的内容,已经被合并到主分支中(或者确保内容已经做好了备份)。

删除本地分支

与重命名分支一样,删除本地分支其实只是将分支的副本删除掉了,如果该分支已经被推送到远程仓库,那么远程仓库中的相应分支是不会被删掉的,其他人还是可以使用的。

1)首先第一步需要检出主分支(因为你不能删除还在工作中的当前分支):

$ git checkout <master_branch_name>

2)列出所有分支(包括本地分支和远程分支):

$ git branch -a

3)删掉本地分支:

$ git branch -d <name_of_the_branch>

如果要删除主分支以外的所有其他本地分支,可以使用如下命令:

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

删除远程分支

删除远程分支,也只是会删除远程仓库上存在的分支副本。如果删除远程分支后(本地分支没有删),后悔了,又不想删掉了,那么还可以将本地分支重新推送到远程仓库。

1)与删除本地分支一样,首先检出主分支:

$ git checkout <master_branch_name>

2)列出所有分支(包括本地分支和远程分支):

$ git branch -a

3)删除远程分支:

$ git push origin -d <name_of_the_branch>

查询远程分支的创建者(作者)

在协同工作的git仓库中,可能会有一些分支,由于某些原因,创建后就不用了。那么作为仓库管理员,就可能需要通知那些创建者,让其删掉不用的分支。那么怎样才能知道分支是谁创建的呢?可以参照如下步骤。

1)还是检出主分支:

$ 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>

以上就是本次分享全部内容。

责任编辑:庞桂玉 来源: TIAP

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK