Git(五):标签管理与多人协作(一)

标签管理

理解标签

标签 tag ,可以简单的理解为是对某次commit 的⼀个标识,相当于起了⼀个别名

例如,在项⽬ 发布某个版本的时候,针对最后⼀次commit 起⼀个v1.0 这样的标签来标识⾥程碑的意义。这有什么⽤呢?相较于难以记住的 commit id ,tag 很好的解决这个问题,因为tag⼀定是⼀个容易记住,且有意义的名字。当我们需要回退到某个重要版本时,直接使⽤标签就能很快定位到

创建标签

在Git中打标签⾮常简单,分为以下三步:

  • 首先,切换到需要打标签的分⽀上
  • 然后,敲命令 git tag [name] 就可以打⼀个新标签
  • 可以⽤命令 git tag 查看所有标签
    在这里插入图片描述

默认标签是打在最新提交的 commit 上的。那如何在指定的commit上打标签呢?⽅法是找到历史提 交的commitid,然后打上就可以了,⽰例如下:

在这里插入图片描述

Git还提供可以创建带有说明的标签,⽤-a指定标签名,-m指定说明⽂字,格式为:git tag -a [name] -m "XXX" [commit_id],使用git show [tagname]可以查看详细信息:

在这里插入图片描述

操作标签

如果标签打错了,也可以删除:

在这里插入图片描述

因为创建的标签都只存储在本地,不会⾃动推送到远程。所以,打错的标签可以在本地安全删除。 如果要推送某个标签到远程,使⽤命令 git push origin <tagname>

在这里插入图片描述

此时,查看远端码云,看到了标签已经被更新!

在这里插入图片描述

如果你本地有很多标签,也可以使用git push origin --tags命令⼀次性的全部推送到远端

如果标签已经推送到远程,要删除远程标签就麻烦⼀点,先从本地删除,然后,从远程删除。删除命令也是push,但是格式如下:git push origin :<tagname>

在这里插入图片描述

在码云上查看确实删除成功:
在这里插入图片描述

多人协作

准备工作

⽬前,我们所完成的⼯作如下:

  • 基本完成Git的所有本地库的相关操作,git基本操作,分⽀理解,版本回退,冲突解决等等
  • 申请码云账号,将远端信息clone到本地,以及推送和拉取

是时候⼲最重要的⼀件事情了,实现多⼈协作开发!为了做这件事情,我们需要先做⼀些准备⼯作。 我们之前已经将项⽬clone到了指定⽬录,如:
在这里插入图片描述

我们在windows环境下,再clone同⼀个项⽬仓库,来模拟和你⼀起协作开发的另⼀名⼩伙伴:

  • 在D盘新建一个文件夹,重命名为git,在git中shift+单击鼠标右键打开windows pwoershell
  • windows pwoershell上执行git clone命令

在这里插入图片描述

clone成功后git里就多了一个remote-gitcode的文件夹

在这里插入图片描述

注意,我们现在是模拟了两个⽤⼾,实际开发中,每个⽤⼾都有⾃⼰的gitee/github账号,如果要多⼈进 ⾏协同开发,必须要将⽤⼾添加进开发者,⽤⼾才有权限进⾏代码提交:

在这里插入图片描述

在这里插入图片描述

到此,相当于有了两个⽤⼾,分别在linux和windows上针对于同项⽬进⾏协作开发,我们的准备⼯ 作到此结束。

⽬前,我们的仓库中只有⼀个master主分⽀,但在实际的项⽬开发中,在任何情况下其实都是不允许 直接在master分⽀上修改代码的,这是为了保证主分⽀的稳定。所以在开发新功能时,常常会新建其 他分⽀,供开发时进⾏迭代使⽤。

那么接下来,就让我们在gitee上新建dev远程分⽀供我们使⽤:

在这里插入图片描述

创建成功:

在这里插入图片描述

创建成功的远程分⽀是可以通过Git拉取到本地来,以实现完成本地开发⼯作。 接下来让我们和另⼀名开发的⼩伙伴都将远程仓库进⾏⼀次拉取操作,并观察结果:

  • 我们要操作的是:

在这里插入图片描述

注:之前讲的 git branch 其实只能查看本地分⽀,要查看远程分⽀需要加上-r选项。 #但前提是要pull⼀下拉取最新的远端仓库,才能看到最新的内容

拉取后便可以看到远程的dev分⽀,接着切换到dev分⽀供我们进⾏本地开发。要说明的是,我们切 换到的是本地的dev分⽀,根据⽰例中的操作,会将本地分⽀和远程分⽀的进⾏关系链接:

在这里插入图片描述

  • 对于小伙伴要操作的是:

在这里插入图片描述

现在,你和你的小伙伴就可以在 dev 上完成开发

多人协作一

现在我们要进行多人协作,背景如下:

我们使用Linux操作系统来模拟开发者一,Windows系统来模拟开发者二,开发者一在file.txt中新增一行“aaa”,开发者二在file.txt中新增一行“bbb”(都是在dev分支上),然后合并到master主分支上

  • 开发者一在dev分支上修改file.txt文件并推送到远程仓库
    在这里插入图片描述

此时远程仓库的dev分支上file.txt文件就被修改了:

在这里插入图片描述

  • 开发者二在dev分支上修改file.txt并试图推送
    在这里插入图片描述

这时推送失败,因为开发者一的最新提交和你推送的提交有冲突,解决办法也很简单,Git已经提示我们

  • 用 git pull 把最新的提交从 origin/dev 抓下来,然后,在本地进行合并,并解决冲突,再推送
    在这里插入图片描述

此时,我们看到远端的码云已经能看到我们的新提交:

在这里插入图片描述

由此,两名开发者已经开始可以进行协同开发了,不断的git pull/add/commit/push ,遇到了 冲突,就使用我们之前讲的冲突处理解决掉冲突

对于开发者一来说,要想看到开发者二的代码,只需要 pull ⼀下即可:

在这里插入图片描述

最后不要忘记,虽然我们是在分支上进行多人协作开发,但最终的目的是要将开发后的代码合并到 master上去,让我们的项目运行最新的代码

  • 切换至master分支, pull ⼀下,保证本地的master是最新内容

  • 切换至 dev 分支, 合并 master 分支,这么做是因为如果有冲突,可以在dev分支上进行处理,而不是在在master上解决冲突(好习惯)

在这里插入图片描述

最后将master推送至远端仓库:
在这里插入图片描述

总结⼀下,在同⼀分支下进行多人协作的⼯作模式通常是这样:

  • 首先,可以试图用git push origin branch-name推送自己的修改
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并
  • 如果合并有冲突,则解决冲突,并在本地提交
  • 没有冲突或者解决掉冲突后,再⽤git push origin branch-name推送就能成功
  • 功能开发完毕,将分支merge进master,最后删除分支
Logo

纵情码海钱塘涌,杭州开发者创新动! 属于杭州的开发者社区!致力于为杭州地区的开发者提供学习、合作和成长的机会;同时也为企业交流招聘提供舞台!

更多推荐