大多数版本控制系统都可以实现类似于Git
的分支功能,与其它版本控制系统不同,Git
以更简单快捷的方式实现了这一功能,使用Git
的分支功能你可以快速的从工作主线进行代码分离,以避免新开发的功能对主线产生影响。
在工作中我们会遇到这样的情况:
- 为了开发新需求,我们会在建立一个新分支
- 建立新分支后,我们会切换到新分支并在新分支上开展工作
- 在新功能开发过程中,主分支上的原功能还需要维护,如:BUG修复等。因此,还需要随时切加主分支工作。
- 在这一过程中,我人实际是在主分支和新功能分支上并行工作。新功能开发完成,需要将两个分支的代码合并。合并完成,可能会删除不再需要的分支。
在上面的工作流中,说明了Git
分支的作用及应用场景。
1. 新建分支
Git
新建分支其实相当于在当前所在的提交对象上创建一个指针。新健分支使用git branch
。例如,新建名为v2.0
的分支:
git branch v2.0
2. 分支切换与推送
git branch
命令仅仅会创建 一个新分支,并不会自动切换到新分支中去。分支切换,需要使用git checkout
命令。例如,切换到刚刚创建的v2.0
分支:
git checkout v2.0
git branch
建立的分支只存在于本地,如果新建立的分支上同时有多人工作,就需要将其推送到远程服务器。分支推送使用git push origin
命令。例如,将刚创建v2.0
分支推送到Git
服务器:
git push origin v2.0
创建并切换至新分支
我们可以通过一个带-b
参数的git checkout
命令,新建一个分支并同时切换到新建的分支上:
git checkout -b v2.0
这种创建方式是下面两条命令的简写:
$ git branch v2.0 $ git checkout v2.0
3. 分支合并
经过一段时间的工作,我们的新功能v2.0
功能完成了。因此,我们需要将其合并到主分支master
然后布署上线,分支合并使用v2.0
分支到主分支:
$ git checkout master $git merge v2.0
4. 分支管理
有时我们需要查看已经创建的分支,并对分支进行一些管理。git branch
不加任何参数,可查看系统中所有分支:
$ git branch * master v2.0
可以看出,当前系统中有两个分支,*
表示当前的工作分支为master
。
新功能开发完成后,v2.0
分支已经不再需要,我们可以使用-d
参数的git branch
命令将其删除:
git branch -d v2.0
我们可能会需要查看分支最后一次的提交信息,可以通过git branch -v
命令查看:
$ git branch -v * master 9870dc0 fix a bug v2.0 2264931 V2.0 done
--merged
和 --no-merged
参数查看分支的合并情况。例如,使用git branch --no-merged
可以查看未合并的分支:
git branch --no-merged
使用git branch --merged
命令查看已经合并的分支:
$ git branch --merged * master v2.0
未合并的分支不能删除,使用git branch -d
删除时分导致失败,但可以使用git branch -D
命令强制删除。