前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git教程5(bug分支和多人协作及标签管理)

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

作者头像
用户4919348
发布2019-04-02 11:29:38
1.3K0
发布2019-04-02 11:29:38
举报
文章被收录于专栏:波波烤鸭波波烤鸭

bug分支

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

  1. git stash apply恢复,恢复后,stash内容并不删除,你需要使用命令git stash drop来删除。
  2. 另一种方式是使用git stash pop,恢复的同时把stash内容也删除了。 演示如下
在这里插入图片描述
在这里插入图片描述

小结:修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除; 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

多人协作

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

  1. 要查看远程库的信息 使用 git remote
  2. 要查看远程库的详细信息 使用 git remote –v
在这里插入图片描述
在这里插入图片描述

推送通知

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

在这里插入图片描述
在这里插入图片描述

本地的read.txt代码如下:

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

  1. master分支是主分支,因此要时刻与远程同步。
  2. 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。

抓取分支

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

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

在这里插入图片描述
在这里插入图片描述

在此目录下克隆

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

将dev1分支push到远程

在这里插入图片描述
在这里插入图片描述

如果还是这个错误

在这里插入图片描述
在这里插入图片描述

那么先执行 git fetch。

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

推送失败

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
$ git branch --set-upstream-to=origin/dev1 dev1
Branch 'dev1' set up to track remote branch 'dev1' from 'origin'.

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;
  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  3. 如果合并有冲突,则解决冲突,并在本地提交;
  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
  5. 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

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

标签管理

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

创建标签

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办? 方法是找到历史提交的commit id,然后打上就可以了:

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作标签

删除标签

git tag -d <tagname>

在这里插入图片描述
在这里插入图片描述

推送标签到远程

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述

删除远程标签

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

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bug分支
  • 多人协作
    • 推送通知
      • 抓取分支
      • 标签管理
        • 创建标签
          • 操作标签
            • 删除标签
            • 推送标签到远程
            • 删除远程标签
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档