文章目录
一 分支
1 分支原理
系统上线后,又要修改bug,又要开发新的功能。
由于新功能没有开发完,所以需要建立分支,一边修改bug,一边开发新功能,最终合并。
2 分支实操
# 查看分支
git branch -v
# 输出内容
* master 49efe51 bug fix
# 添加分支
git branch -v
# 输出内容
dev 49efe51 bug fix
* master 49efe51 bug fix
# 切换分支
git checkout dev
# 输出内容
* dev 49efe51 bug fix
master 49efe51 bug fix
# 在dev分支新建一个类
touch src/java_test01.java
git add src/java_test01.java
git commit -m "new test02"
# 可以看到两个分支的版本不一致了
git branch -v
* dev 38444da new test02
master 49efe51 bug fix
# 切换回master,新类不见了
git checkout master
# 切换回dev,新类又出现了,从.git文件中恢复
git checkout dev
# 功能汇总,以master为主
git checkout master
git merge dev
# 版本一致
$ git branch -v
dev 38444da new test02
* master 38444da new test02
3 版本冲突
(1)冲突产生
新功能继续开发,但开发中途主干修复了bug,新功能也需要使用修复好的主干,这时就要以分支为主
注意bug修复之后与新功能之间是否存在冲突
也需要注意分支上和主干上同时进行了bug的修复,但修复的方式不一样,无论是主干与分支合并,还是分支与主干合并,最终合并的版本会出现同一段代码出现了两种写法,保留哪个,git很难去判断,需要程序员来手工判断解决冲突。
(2)合并时冲突
程序合并时发生冲突系统会提示CONFLICT关键字,命令行后缀会进入MERGING状态,表示此时是解决冲突的状态。
(3)解决合并时冲突
此时通过git diff 可以找到发生冲突的文件及冲突的内容。
然后修改冲突文件的内容,再次git add 和git commit 提交后,后缀MERGING消失,说明冲突解决完成。
新建分支,切换分支:git checkout -b <分支名>
修改文件内容,并添加,提交:(同时修改第x行)
切换主分支:修改文件内容,并添加,提交:(同时修改第x行)
当把其他分支合并到主分支时出现冲突:
# 制造冲突
vim src/java_test.java
# 添加一行A
git add src/java_test.java
git commit -m "insert A"
# 切换分支
git checkout dev
vim src/java_test.java
git commit -m "insert B"
# 此时两分支彼此独立,不会产生问题
git branch -v
* dev 56bc207 insert B
master 7434eb8 insert A
# 合并
git merge master
# 产生提示
Auto