一、为什么要做分支管理:
1.发了版本需要做一个版本分支,如果此版本出了bug 可以切换到此版本修改bug,以后可能在某一个版本节点上延伸出新的分支
2.需要一个开发版的分支用来开发新的功能,因为很多情况下都是开发没开发完又发现了紧急bug,这个时候不能用当前的代码马上打包修复bug
二、之前搭好了一个gerrit 代码服务器,只记录一下创建分支的流程
1.创建分支
直接去gerrit 界面创建分支,名字按照自己的需求填写,初始化版本->指定一个master 提交的版本SHA1
2.创建完成之后,本地执行 git pull
git branch -a 查询版本分支列表
3.切换到指定分支
4.分支里面创建一个文件 然后推上去
5.切换到主分支可以看到并没有自己提交的那个文件,切换到分支之后有自己创建提交的文件!
三、开创了分支,当改了bug 或者有新的功能就需要合并到主分支里了
1.切换到主分支
git checkout master
2.将分支合并到主分支
git merge branch_2
四、不小心在稳定的分支上改了大量的代码,提交了怕出问题,不提交又觉得白干了。
在tortoisegit 上commit 的时候发现可以提交到一个新的分支上,于是就有一个想法,提交到新分支上,然后跟dev 分支合并,这样就不会改变稳定版的分支。
1.首先提交的时候勾选new branch 就会让你输入新分支的名称
2.切换到开发的那个分支 git chekcout dev
3.合并两个分支 git merge newbranch
4.发现冲突了,再用 tortoisegit 解决冲突,再次提交
5.发现提交成功了,但是gerrit服务器上合并不了
6.git pull --rebase,让自己处于最新的节点上,这样code merge在最新的代码之上。之前没用过这个指令有点慌,
ctrl +c 打断了
7.此时想再pull 或者push 的时候发现都不行了
有点慌->百度了一下
git am --abort
这样又进入当前分支了
8.查了一下 git pull --rebase 好像是我需要的,于是继续
说是要先解决冲突然后 git rebase --continue
9.解决冲突之后 git rebase --continue 然后就可以了
10.登录到gerrit服务器 发现可以合并了
11.确定没问题了就可以删掉本地的那个分支了
五、在某个发布的分支修改了bug,将它合并到其他分支
1.git log 找到提交的commit id
2.切换到指定分支 git switch 分支
3.git cherry-pick commit id
4.发现冲突 我是用tortoiesgit 编辑冲突解决冲突
5.git cherry-pick --continue 会进入 vim 界面 按照 ESC键 再按两下大写的Z 退出vim 就搞定了