Git教程5(bug分支和多人协作及标签管理)

简介: 在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下:

bug分支


 在开发中,会经常碰到bug问题,那么有了bug就需要修复,在Git中,分支是很强大的,每个bug都可以通过一个临时分支来修复,修复完成后,合并分支,然后将临时的分支删除掉。

比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下:

1.png


 并不是我不想提交,而是工作进行到一半时候,我们还无法提交,比如我这个分支bug要2天完成,但是我issue-404 bug需要5个小时内完成。怎么办呢?还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。如下:

2.png


 所以现在我可以通过创建issue-404分支来修复bug了。首先我们要确定在那个分支上修复bug,比如我现在是在主分支master上来修复的,现在我要在master分支上创建一个临时分支,演示如下:


3.png


 修复完成后,切换到master分支上,并完成合并,最后删除issue-404分支。演示如下:

4.png


 现在,我们回到dev分支上干活了。

5.png

 工作区是干净的,那么我们工作现场去哪里呢?我们可以使用命令 git stash list来查看下。如下:

6.png


 工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,可以使用如下2个方法:


git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。

另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。

演示如下

7.png


小结:修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场


多人协作


 当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。


要查看远程库的信息 使用 git remote

要查看远程库的详细信息 使用 git remote –v

8.png


推送通知


 推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上: 使用命令 git push origin master,比如我现在的github上的read.txt代码如下:

9.png

本地的read.txt代码如下:

10.png

 现在我想把本地更新的read.txt代码推送到远程库中,使用命令如下:

11.png

 我们可以看到如上,推送成功,我们可以继续来截图github上的read.txt内容 如下:

12.png

 可以看到 推送成功了,如果我们现在要推送到其他分支,比如dev分支上,我们还是那个命令 git push origin dev,那么一般情况下,那些分支要推送呢?


master分支是主分支,因此要时刻与远程同步。

一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

抓取分支


 多人协作时,大家都会往master和dev分支上推送各自的修改。现在,模拟一个你的小伙伴,可以在另一台电脑(注意要把SSH Key添加到GitHub)或者同一台电脑的另一个目录下克隆


我在本地目录下新建一个文件夹来模拟另一个用户。

13.png

在此目录下克隆

14.png

 当你的小伙伴从远程库clone时,默认情况下,你的小伙伴只能看到本地的master分支。不信可以用git branch命令看看

15.png


 现在,你的小伙伴要在dev分支上开发,就必须创建远程origin的dev分支到本地,于是他用这个命令创建本地dev分支:

16.png


将dev1分支push到远程

17.png

如果还是这个错误

18.png

那么先执行 git fetch。

19.png

 现在,他就可以在dev上继续修改,然后,时不时地把dev分支push到远程:

20.png21.png22.png

 你的小伙伴已经向origin/dev分支推送了他的提交,而碰巧你也对同样的文件作了修改,并试图推送:

23.png


推送失败

24.png

 推送失败了,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送:

25.png


git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接:

26.png

$ git branch --set-upstream-to=origin/dev1 dev1
Branch 'dev1' set up to track remote branch 'dev1' from 'origin'.


这回git pull成功,但是合并有冲突,需要手动解决,解决的方法和分支管理中的解决冲突完全一样。解决后,提交,再push:

27.png28.png29.png


 因此,多人协作的工作模式通常是这样:


首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。


标签管理


 git里边默认的版本好不容易记。对于一些里程碑版本,需要记下来,此时可以使用标签,给项目的发布版本打标签,也是标签的一个重要功能之一


创建标签


在Git中打标签非常简单,首先,切换到需要打标签的分支上:

30.png

然后执行 git tag <name> 就可以打一个新标签

31.png

可以用命令git tag查看所有标签:

32.png

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?

方法是找到历史提交的commit id,然后打上就可以了:

33.png

比如要对’添加了一个文件同时修改了一个文件’打个标签

34.png

注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息:

35.png

还可以创建带有说明的标签,用-a指定标签名,-m指定说明文字:

36.png37.png


操作标签

删除标签


git tag -d <tagname>

38.png


推送标签到远程


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

39.png


如果要一次性把所有标签推送到远程,可以如下:

40.png


删除远程标签


 如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除

41.png

 然后,从远程删除。删除命令也是push,但是格式如下:

42.png43.png


远程上的v0.8版本没有了。


相关文章
|
17天前
|
开发工具 git
Git教程:深入了解删除分支的命令
【4月更文挑战第3天】
37 0
Git教程:深入了解删除分支的命令
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux git命令使用教程
【Shell 命令集合 文件管理】Linux git命令使用教程
34 0
|
1月前
|
开发工具 git 开发者
|
1月前
|
开发工具 git
|
1月前
|
Linux 开发工具 数据安全/隐私保护
【Linux】—— git的管理以及使用
【Linux】—— git的管理以及使用
|
1月前
|
小程序 Shell 网络安全
【微信小程序】-- 使用 Git 管理项目(五十)
【微信小程序】-- 使用 Git 管理项目(五十)
|
1月前
|
开发工具 git 开发者
|
1月前
|
开发工具 git
|
1月前
|
程序员 开发工具 git
好程序员Git入门到精通教程
本课程主要通过命令行和idea来介绍Git的安装、仓库创建、工作流、远程仓库、克隆仓库、标签管理和分支管理等Git的主要内容。 另外关于GitHub的使用介绍也有完整的说明和使用,接轨生产环境使用方式。
10 1
好程序员Git入门到精通教程
|
1月前
|
存储 开发工具 git
Git 术语解析:深入理解上游分支
【2月更文挑战第26天】
87 0
Git 术语解析:深入理解上游分支

相关实验场景

更多