当我们将老版本的代码发布到生产上时,本地代码中有许多未经测试的新功能,但生产上的老代码出现了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中向我咨询
关注我的公众号,获取更多关于后端、大数据的知识