目录
1.理解分支
- 感性理解 :分支可以理解为平行宇宙 ,但是在用户需要的时候,可以将两个平行宇宙合并 ,此时两个平行宇宙的效果将会"叠加"
- 理性理解 :每次提交,Git都会把它们串成⼀条时间线,这条时间线就可以理解为是⼀个分⽀
- 截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即
master
分⽀
- 截⽌到⽬前,只有⼀条时间线,在Git⾥,这个分⽀叫主分⽀,即
HEAD
理解 :HEAD
严格来说不是指向提交,⽽是指向master
,master
才是指向提交的- 所以
HEAD
指向的就是当前分⽀ - 每次提交,
master
分⽀都会向前移动⼀步- 随着用户不断提交,
master
分⽀的线也越来越⻓ - ⽽
HEAD
只要⼀直指向master
分⽀即可指向当前分⽀
- 随着用户不断提交,
- 所以
2.创建分支
-
查看分支 :
git branch
*
表示当前HEAD
指向的分支
plaintext$ git branch * master
-
创建分支 :
git branch branch_name
- 创建好分支之后,Git将会新创建一个指针
- 此时新创建的指针和
master
指向同一个修改,即同一个版本
plaintext$ git branch dev $ git branch dev * master
3.切换分支
-
切换分支 :
git checkout branch_name
-
将创建分支和切换分支合二为一的命令 :
git checkout -b branch_name
plaintext$ git checkout dev Switched to branch 'dev' $ git branch * dev master
-
切换到新的分支后,如果进行独立于的
master
分支的修改,并进行提交-
现象 :新的分支有的内容,在
master
分支里并不存在 -
原因 :两分支指向的提交已经不一样了
plaintext$ cat .git/refs/heads/master 13204498006394d6067fbc8b6046885c6e5e9649 $ cat .git/refs/heads/dev 8ef34a28afd16a7c6f3ad43f136212850205bb22
-
4.合并分支
-
如果要在
master
分支上能看到最新的提交,就需要将新的分支合并到master
分支 -
合并分支 :
git merge branch_name
- 此处的
Fast-forward
表示快进模式- 即 :直接将
master
指向新分支的当前提交,所以该种合并方式下速度非常快
- 即 :直接将
- 但并不是每次合并都能
Fast-forward
plaintext$ git branch dev * master $ git merge dev Updating 1320449..8ef34a2 Fast-forward dev.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 dev.txt
- 此处的
5.删除分支
-
合并完成后,
dev
分⽀对于用户来说就没⽤了,那么dev
分⽀就可以被删除掉 -
删除分支 :
git branch -d branch_name
- 注意 :如果当前正处于某分⽀下,就不能删除当前分⽀,需要切换到其他分支再删除
- 注意 :如果当前正处于某分⽀下,就不能删除当前分⽀,需要切换到其他分支再删除
-
因为创建、合并和删除分⽀⾮常快,所以Git⿎励用户使⽤分⽀完成某个任务,合并后再删掉分⽀,这和直接在master分⽀上⼯作效果是⼀样的,但过程更安全