几乎所有版本控制工具都有分支的概念,分支可以将你的手上的工作从主线中分离,避免影响了主线的开发工作。特别适合团队的协同开发。Git的分支操作强大且简单。几个简单的命令就可以实现分支的创建和融合,以及与远程仓库分支的交互。
这个命令首先可以查看当前本地仓库的分支。
git branch [--all|--list]
(如果想要看远程仓库的分支,可以使用git remote show origin
来查看)
创建分支也很简单。
git branch <branchname>
删除分支
git branch -d <branchname>
在本地新建的分支和远程仓库的分支目前是没有任何关联的,想让新建的分支关联远程仓库分支,只需添加-u
参数即可。比如:
git branch -u origin/dev dev
这样就可以将本地新建的dev分支关联远程仓库origin的dev分支。
之前我们看到过这个命令的使用,这个命令除了用于回滚之前的提交外,也可以用于切换分支。
git checkout <branchname>
当这个命令加上-b
参数,就可以分支创建切换一步到位。
git checkout -b <branchname>
这个命令还可以在创建于远程仓库关联的分支。当远程仓库有一个新建的分支时,当我们也想在本地创建一个与之关联的分支。首先要确保本地拉取最新的远程仓库。如果已经是最新的则可以跳过。
git fetch origin
git merge origin
然后使用git checkout
命令。
git checkout -b dev [--track] origin/dev
这样就创建了一个关联远程仓库dev分支的本地dev分支。如果本地分支名和远程分支名一样,则命令还可以进一步简化:
git checkout --track origin/dev
也会有同样效果(–track不能省略,否则就会切换到origin/dev,此时HEAD指针也会处于游离态)。
如果这个分支名是唯一的,则命令可以进一步简化。
git checkout dev
这和之前用git branch
创建分支,并且使用git branch -u
关联远程分支作用是相同的。
这里再添加一个小插曲,前面是远程仓库有了新的分支,然后在本地创建关联分支。如果是本地有了新的分支,想要将新的分支推送到远程仓库这么办呢?很简单,使用git push
即可。
git push -u origin dev
删除远程分支:
git push -d origin dev
这个命令和git checkout
一样,也是用于切换分支。
git switch dev
添加-c
参数后,就能实现创建和切换分支了。
git switch -c dev
这个命令用于合并分支。比如想在master分支合并dev分支,在切换到master分支后,使用
git merge dev
便可以合并dev分支了。如果合并是fast-forward,便不会产生冲突,那么合并就很快进行。如果产生冲突,冲突文件里面会用<<<<< ======= >>>>>显示冲突内容,用文本编辑器做修改,确定最后合并内容后,使用
git add xxx
git commit xxx ##或者 git merge --continue
如果想终止合并,则使用git merge --abort
即可。