Git 分支管理

当我们将老版本的代码发布到生产上时,本地代码中有许多未经测试的新功能,但生产上的老代码出现了bug。当我们只需要修改老代码中的BUG,但不不想将未经测试的新功能添加到生产上,此时我们怎么办?

最笨的方法就是在新目录中拉去老版本代码,将老版本的代码修改完成后,将修改后的老版本发布到生产。然后将修改后的老代码合并到新代码上,这样就可以解决上面问题。但是,这样做的话是不是很麻烦?

此时需要使用到git的版本控制机制。下面以一个例子来说明版本控制。

本地代码有一个User.java类,我已经将此类发布到生产上了,称之为:oldCode,代码如下:

package com.test.campus.device;

/**
 * Created by XiCHuan on 2018-12-11.
 */
public class User {

    public static int mustNum = 200;

    public static String name = "XiChuan";

    public static void main(String[] args){
        System.out.println(getAge());
    }

    private static int getAge(){
        return (mustNum/0 + 12)/10;
    }

}

然后我在此类上添加了功能,因为还没有测试并没有上生产,称之为:newCode

package com.test.campus.device;

/**
 * Created by XiCHuan on 2018-12-11.
 */
public class User {

    public static int mustNum = 200;

    public static String name = "XiChuan";

    public static void main(String[] args){
        System.out.println(getAge());
        System.out.println(getName());
    }

    /**
     *获取年龄
     * @return
     */
    private static int getAge(){
        return (mustNum/0 + 12)/10;
    }

    /**
     * 获取姓名
     * @return
     */
    private static String getName(){
        return "我是:"+name;
    }

}

此时测试人员告诉我说代码报错,仔细看了代码发现是因为,oldCode代码中的getAge()方法有 / by zero错误。

1.此时创建一个dev的分支,并提交到本地:

#创建一个dev分支,并切换到dev分支
git checkout -b dev

#上面命令可以分为下面两个
#git branch dev   #创建dev分支
#git checkout dev #切换到dev分支

#添加到暂存区
git add User.java
#新功能添加到本地dev分支上
git commit -m "新增getName方法"

2.切换到master分支,并查看代码中的内容:

#查看所有分支
git branch
#切换到master分支
git checkout master

此时,我们发现master工作区的代码是oldCode,此代码与远程仓库的代码是一致的。

3.修改代码,并发布到生产上

package com.test.campus.device;

/**
 * Created by XiCHuan on 2018-12-11.
 */
public class User {

    public static int mustNum = 200;

    public static String name = "XiChuan";

    public static void main(String[] args){
        System.out.println(getAge());
    }

    private static int getAge(){
        return (mustNum/1 + 12)/10;   //修改此bug行
    }

}

4.此时newCode还在dev分支上,我们需要将dev分支的代码合并到master分支

将oldCode修改bug的地方取消掉(为了直接合并后会有冲突),然后进行合并:

#将dev分支的代码合并到当前分支
git merge dev

我们发现现在master工作区的代码与dev分支提交的代码是一致的,现在我们需要将bug添加上去,并进行新功能的添加。

5.删除dev分支

git branch -d dev

此例子不是很好。使用范围是bug改动范围很小,且新功能基本已经测试,且不能立刻上生产。今天刚学习后直接在生产上刚好遇到了这个问题..........,哈哈哈,感觉记录下次笔记。

版本控制命令总结:

git checkout -b dev  ##创建并切换为dev分支

git branch dev   #创建dev分支
git checkout dev #切换到dev分支


git branch   #查看所有分支
git checkout master #切换到master分支 


git merge dev  #将dev分支的代码合并到当前分支


git branch -d dev #删除dev分支

资料:创建与合并分支 - 廖雪峰的官方网站

 github上有我更多的笔记:Raray-chuan (兮川) · GitHub,欢迎stars与following,如果有问题可以在issue中向我咨询

关注我的公众号,获取更多关于后端、大数据的知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值