1、简介
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。有人把 Git 的分支模型称为必杀技特性,而正是因为它,将 Git 从版本控制系统家族里区分出来。(摘抄自菜鸟教程)
2、使用
(1)查看分支
查看本地分支:git branch
查看所有分支(含远端分支):git branch -a
(2)创建分支
创建一个空分支:git branch 分支名
从已有的本地分支创建新的本地分支(如从master分支),创建一个dev分支:git checkout -b dev
将远程git仓库里的指定分支拉取到本地(本地不存在的分支):git checkout -b 本地分支名 origin/远程分支名
这个将会自动创建一个新的本地分支,并与指定的远程分支关联起来。
例如远程仓库里有个分支dev2,我本地没有该分支,我要把dev2拉到我本地:
若成功,将会在本地创建新分支dev2,并自动切到dev2上。
如果出现提示:
fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?
表示拉取不成功。我们需要先执行
git fetch
然后再执行
git checkout -b 本地分支名 origin/远程分支名
(3)拉取分支
拉取远端分支:git pull origin dev
拉取所有远端分支:git fetch
设置git push,pull默认的提交获取分支,这样就很方便的使用git push 提交信息或git pull获取信息
设置跟踪:git branch --set-upstream-to=origin/dev
取消对master的跟踪:git branch --unset-upstream master
(4)切换分支
查看本地分支:git checkout BranchName
查看所有分支(含远端分支):git checkout origin/BranchName
(5)跟踪分支
设置跟踪:git branch --set-upstream-to=origin/BranchName
取消对master的跟踪:git branch --unset-upstream master
(6)删除分支
删除本地分支:git branch -d BranchName
删除远端分支:git push --delete origin BranchName
(7)重命名分支
Step1、将本地分支oldbranch切一个分支到本地
git branch -m oldbranch newbranch
Step2、删除远程分支
git push --delete origin oldbranch
Step3、将本地新分支推送到远程
git push origin newbranch
(8)合并分支
方式一:界面
Step1:发起合并请求
Step2:填写合并信息
Step3:同意合并请求并完成合并
方式二:命令行
一旦某分支有了独立内容,你终究会希望将它合并回到你的主分支。 你可以使用以下命令将任何分支合并到当前分支中去:
git merge
$ git branch
* master
newtest
$ ls
README test.txt
$ git merge newtest
Updating 3e92c19..c1501a2
Fast-forward
runoob.php | 0
test.txt | 1 -
2 files changed, 1 deletion(-)
create mode 100644 runoob.php
delete mode 100644 test.txt
$ ls
README runoob.php
以上实例中我们将 newtest 分支合并到主分支去,test.txt 文件被删除。
合并完后就可以删除分支:
$ git branch -d newtest
Deleted branch newtest (was c1501a2).
删除后, 就只剩下 master 分支了:
$ git branch
* master
(9)分支变基
当开发项目中存在一个主要开发分支时如develop,然后单独开发分支为dev1和dev2,要保证dev1始终处于从远端develop的最新的提交分岔出来的样子,具体操作步骤如下
git checkout dev1
(切换本地分支)
git fetch
(拉取远端所有内容)
git stash
(暂存本地当前内容)
git rebase origin/develop
(变基、使得个人开发分支与主开发分支保持一致)
git stash pop
(恢复本地当前内容)
之后可上传本地分支到远端分支
git add .
git commit
git push origin dev1 #有时可能需要加上强制推送的参数-f
(10)冲突解决
在合并分支或者分支变基的时候,若不同分支存在冲突之时,需要对比两分支的冲突点,选择某一分支或者重新编辑内容,可通过git diff来查看是否还存在冲突内容,若不存在,则可以通过命令git rebase --continue继续完成变基操作