zoukankan      html  css  js  c++  java
  • 【转】Git使用教程之BUG分支

    1.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内容也删除了。

             演示如下

    八:多人协作。

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

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

    如下演示:

     

    一:推送分支:

          推送分支就是把该分支上所有本地提交到远程库中,推送时,要指定本地分支,这样,Git就会把该分支推送到远程库对应的远程分支上:

          使用命令 git push origin master

    比如我现在的github上的readme.txt代码如下:

    本地的readme.txt代码如下:

     

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

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

    可以看到 推送成功了,如果我们现在要推送到其他分支,比如dev分支上,我们还是那个命令 git push origin dev

    那么一般情况下,那些分支要推送呢?

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

    二:抓取分支:

    多人协作时,大家都会往master分支上推送各自的修改。现在我们可以模拟另外一个同事,可以在另一台电脑上(注意要把SSH key添加到github上)或者同一台电脑上另外一个目录克隆,新建一个目录名字叫testgit2

    但是我首先要把dev分支也要推送到远程去,如下

    接着进入testgit2目录,进行克隆远程的库到本地来,如下:

     

    现在目录下生成有如下所示:

    现在我们的小伙伴要在dev分支上做开发,就必须把远程的origin的dev分支到本地来,于是可以使用命令创建本地dev分支:git checkout  –b dev origin/dev

    现在小伙伴们就可以在dev分支上做开发了,开发完成后把dev分支推送到远程库时。

    如下:

    小伙伴们已经向origin/dev分支上推送了提交,而我在我的目录文件下也对同样的文件同个地方作了修改,也试图推送到远程库时,如下:

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

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

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

    我们可以先来看看readme.txt内容了。

    现在手动已经解决完了,我接在需要再提交,再push到远程库里面去。如下所示:

    因此:多人协作工作模式一般是这样的:

      1. 首先,可以试图用git push origin branch-name推送自己的修改.
      2. 如果推送失败,则因为远程分支比你的本地更新早,需要先用git pull试图合并。
      3. 如果合并有冲突,则需要解决冲突,并在本地提交。再用git push origin branch-name推送。
  • 相关阅读:
    How to Enable RPMForge Repository in RHEL/CentOS 7.x/6.x/5.x
    CentOS yum 源的配置与使用
    CentOS7安装GNOME可视化界面
    Mac Book Air 上用 Vmware Fusion 8 pro 安装 CentOS7
    Linux下MySQL的简单操作
    KindEditor使用初步
    WPF中ComboBox使用
    使用数据模版选择器及数据触发器
    DataTemplate应用
    制作圆角文本框与圆角按钮
  • 原文地址:https://www.cnblogs.com/zdd-java/p/11159009.html
Copyright © 2011-2022 走看看