在 IDEA 中操作 Git
GitLab 中有一个 git-branch-test 的项目
处于 master 分支
本地项目目录:
所在分支:
一般的工作流程:
- master 作为主分支, 一般都是用来发布最终版本的分支
- 当实现一个新需求时, 需要创建一个分支, 在新创建的分支上进行开发
这是已经实现的功能, 并且已经发布到 gitlab 服务器上的分支 (master):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int a = Integer.parseInt(s); System.out.println(a); if (isOdd(a)) System.out.println("奇数"); else { System.out.println("偶数"); } }
public static boolean isOdd(int i) { return i % 2 == 1; } }
|
现在有一个新功能需要开发:
增加一个交换 2 个参数的值的方法
因为是新的需求, 我们不能直接在 master 分支上修改, 必须新建一个分支, 功能完成后经过测试才能正式提交到主分支上
新建分支
IDEA 设置 一次就好
- 设置 tasks
token 登录自己的 gitlab 进行申请
User Settings –> Access Tokens
设置成功后, IDEA 右上角会出现 task 下拉选择框
- 新建分支
“ok” 之后 自动切换到 sprint1 分支
开始新需求的开发
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int input = Integer.parseInt(s); System.out.println(input); if (isOdd(input)) System.out.println("奇数"); else { System.out.println("偶数"); }
Integer[] value = {100,1}; switchValue(value); System.out.println("value[0] = " + value[0] + " \n" + "value[1] = " + value[1]);
}
public static boolean isOdd(int i) { return i % 2 == 1; }
public static void switchValue(Integer[] value){ } }
|
假设此时,你突然接到一个电话说有个很严重的问题需要紧急修补,那么可以按照下面的方式处理:
- 提交当前未完成的工作到本地工作区
- 返回到 master 分支。
- 为这次紧急修补建立一个新分支,并在其中修复问题。
- 通过测试后,回到 master 分支,将修补分支合并进来,然后再推送到 gitlab 服务器上。
- 切换到之前实现新需求的分支,继续工作。
这里使用 IDEA 自带工具进行分支的创建以及切换
使用 IDEA 创建分支
先提交当前未完成的工作到本地工作区
然后切换到 master
创建分支
然后会自动切换到 iss55 分支上
14908590481527
所有代码都保持为 master 原样
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int a = Integer.parseInt(s); System.out.println(a); if (isOdd(a)) System.out.println("奇数"); else { System.out.println("偶数"); } }
public static boolean isOdd(int i) { return i % 2 == 1; } }
|
现在开始修复 bug
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int a = Integer.parseInt(s); System.out.println(a); if (isOdd(a)) System.out.println("奇数"); else { System.out.println("偶数"); } }
public static boolean isOdd(int i) { return (i & 1) == 1; } }
|
测试一番后提交到本地工作区
然后回到 master 分支, 把它合并进来, 然后发布到 gitlab
合并分支
IDEA 中操作
合并之后:
合并之后 master 分支和 iss55 分支指向同一位置
然后将修改 push 到 gitlab
push 成功之后, origin 指向最新的一条记录
此时 iss55 问题已被修复, 可以删除掉
IDEA 上操作
最后回到原来的 sprint1 分支上继续完成没有完成的工作
代码变成:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int input = Integer.parseInt(s); System.out.println(input); if (isOdd(input)) System.out.println("奇数"); else { System.out.println("偶数"); }
Integer[] value = {100,1}; switchValue(value); System.out.println("value[0] = " + value[0] + " \n" + "value[1] = " + value[1]);
}
public static boolean isOdd(int i) { return i % 2 == 1; }
public static void switchValue(Integer[] value){ } }
|
此时可以看到 iss55 分支修改的代码在 sprint1 分支中并没有改变
不用担心之前 iss55 分支的修改内容尚未包含到 sprint1 中来。
如果确实需要纳入此次修补,可以用 git merge master 把 master 分支合并到 iss55;
或者等 sprint1 完成之后,再将 sprint1 分支中的更新并入 master。
先完成 sprint1 的开发工作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| public class HelloWorld { public static void main(String[] args) { String s = JOptionPane.showInputDialog("请输入一个整数"); int input = Integer.parseInt(s); System.out.println(input); if (isOdd(input)) System.out.println("奇数"); else { System.out.println("偶数"); }
Integer[] value = {100,1}; switchValue(value); System.out.println("value[0] = " + value[0] + " \n" + "value[1] = " + value[1]);
}
public static boolean isOdd(int i) { return i % 2 == 1; }
public static void switchValue(Integer[] value){ value[0] = value[0] ^ value[1]; value[1] = value[0] ^ value[1]; value[0] = value[0] ^ value[1]; } }
|
完成开发, 提交到本地工作空间
合并分支
在问题 sprint1 相关的工作完成之后,可以合并回 master 分支。实际操作同前面合并 iss55 分支差不多,只需回到 master 分支,运行 git merge
命令指定要合并进来的分支:
IDEA 操作与上面合并操作一样
最后 push 到 gitlab