Git 的原理与使用(上)与Git 的原理与使用(中) 中介绍了Git及其相关概念,本地与远程的Git命令操作等,本文接着以上两篇,将对Git的标签管理、多人协作与企业级开发模型三方面展开介绍。
目录
补充:本地 git branch -a 依然能看到删除的远程分支的解决办法
七、标签管理
1.理解标签
标签 tag
,可以简单地理解为是对某次 commit
的一个标识,相当于起了一个别名。
例如,在项目发布某个版本时,通常会针对最后一次 commit
起一个 v1.0
这样的标签,来标识“里程碑”的意义。
这有什么用呢?相较于难以记住的 commit id
, tag
是一个自定义的、更简短好记且有意义的标识。在当我们需要回退到某个重要版本时,直接使用标签便能很快地定位到。
2.创建标签
(1)如何创建标签
我们可以给某一次提交(commit)来“打标签”。
在Git中打标签非常简单。
首先切换到需要打标签的分支上(git chekcout <分支名>),然后敲命令
git tag [name]
就可以打上一个新标签:
git tag v1.0 # 默认对最新的一次提交进行打标签
回车之后,会默认给我们最新一次的提交打一个标签,此处打上的标签就是v1.0。
可以用命令
git tag
可以查看当前存在的所有标签(注:标签不是按时间顺序列出,而是按字母排序的):
执行tree .git
,查看打了标签之后git版本库中有什么变化:
(2)如何在指定的commit上打标签
首先找到历史提交的某个commit id,然后通过命令打上即可:
# 命令
git tag [name] [commitID]
# 对44e30f7这一次提交进行打标签
git tag v0.9 44e30f7
(3)如何给新创建的标签添加标签说明
Git 还提供了创建带有说明标签的功能。用-a指定标签名,-m指定说明文字,格式为:
git tag -a [name] -m "XXX" [commit_id]
例如:
git tag -a v8.0 -m "important tag:xxxx" 7222302 # 对7222302这一次提交进行打标签,并附上标签说明
使用命令
git show [tag名称]
可以查看这个tag对应的详细信息,包括tag的标签说明:
3.操作标签
(1)删除标签
如果标签打错了,也可以删除:
git tag -d <tag名称>
因为创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
(2)推送本地标签到远程仓库
本地的标签也可以推送到远程仓库中。
远端码云上也有标签一栏:
如果要推送某个标签到远程,使⽤命令
git push origin <tagname>
此时查看远端码云,可以看到标签已经被更新:
如果本地有很多标签,也可以一次性的全部推送到远端:
git push origin --tags
(3)删除远程标签
如果标签已经推送到远程,要删除远程标签,会相对麻烦一点:先从本地删除,然后把操作push到远端:
git push origin :<tag名称>
(冒号后面跟tag的名称)
冒号后也可以跟tag的路径:
git push origin :refs/tags/v1.0
在码云上查看,已删除成功:
八、多人协作
1.完成准备工作
目前,我们已经完成了如下学习:
基本完成Git的所有本地库的相关操作,git基本操作,分支理解,版本回退,冲突解决等等。
申请码云账号,将远端信息clone到本地,以及推送和拉取。
为了实现多人协作开发,我们先做一些准备工作来模拟有两个用户协作开发的情景:
之前的演示中,我们已经将项目clone到了Linux主机上,那么现在我们再将同一个远程仓库clone到Windows主机上。远程仓库与主机的关系如下:
注意,在实际开发中,每个用户都有自己的Gitee或Github账号,如果要多人进行协同开发,必须要将用户添加进开发者,用户才有权限进行代码提交:
邀请用户:
至此,我们相当于有了分别在Linux和Windows上针对于同一项目进行协作开发的两个用户。关于用户的准备工作到这里就完成了。
但是目前,我们的仓库中只有一个master主分支。而在实际的项目开发中,在任何情况下其实都是不允许直接在master分支上修改代码的,这是为了保证master分支的稳定。所以在开发新功能时,常常会新建其他分支,供开发时进行迭代使用。
我们可以直接先在远程仓库新建dev分支:
创建成功:
然后,我们在Linux主机上以pull的方式,并在Windows上以clone的方式,把远端仓库同步到本地:

这里补充到了在本地查看远程分支的命令:
git branch -r
pull后便可以看到远程的dev分支:origin/dev,但本地并没有dev分支,因此接着要切换到本地的dev分支供我们进行本地开发。
以下命令会将本地分支和远程分支的进行关系链接:
git checkout -