代码托管 CODEARTS REPO-Git本地研发场景:分支操作
分支操作
- 新建分支
Git新建分支的本质就是创建一个指向最后一次提交的可变指针,所以,Git分支的创建不是复制版本库的内容,仅仅是新建了一个指针,它以40个字符长度SHA-1字串形式保存在文件中。
1
#git branch branchName commitID
基于commitID即某一个版本号拉出新分支,如果没有commitID则基于当前分支的HEAD拉出新分支。
例如,新建feature分支,执行的命令为git branch feature,如下图所示。
- 切换分支
1
#git checkout branchName
例如,切换到feature分支,执行的命令为git checkout feature,如下图所示。
- 分支合并
无论哪种工作流都会涉及到分支合并(把一个分支中的修改整合到当前分支),主要有两种方法:三方合并(merge) 和衍合(rebase)。通过对同一种场景进行不同操作体会两种合并方法的区别。
场景:master分支新增了C4节点, hotfix分支新增了C3节点,现将hotfix分支合并到master分支:
- 三方包括hotfix新增节点C3,master新增节点C4,以及两者的共同祖先节点C2。这种合并操作简单,但新增合并节点C5,形成了环形,版本记录可读性差,如下图所示。
1 2
#git checkout master #git merge hotfix
- 衍合先将master分支新增节点C4以补丁形式保存在.git/rebase目录中,然后同步hotfix分支最新代码,再应用补丁C4’,如下图所示。
1 2
#git checkout master #git rebase hotfix
- 三方包括hotfix新增节点C3,master新增节点C4,以及两者的共同祖先节点C2。这种合并操作简单,但新增合并节点C5,形成了环形,版本记录可读性差,如下图所示。
- 冲突解决