-
定义:
- Git 的默认分支是 master,所有的 commit 会在分支上自动移动。在多次提交之后,master 分支指向最后的 commit object 提交对象链)
- Git 的 master 分支并不特殊,跟其他分支没有区别。之所以每一个仓库都有 master 分支,是因为 git init 命令默认创建它。
- 很多人认为 master 分支是稳定、无 bug 的分支。而 develop 往往预示着新功能,不稳定的分支。这和分支策略有关,但本质这两个分支没区别
-
分支创建:
- git branch:查看分支
- git branch 分支名:创建该分支
- git checkout 分支名:切换到该分支
- git checkout -b 分支名:创建并切换到该分支
-
分支删除:
- git branch -d 分支名:删除该分支
- git baranch -D 分支名:强制删除该分支
- 注意:
- 不能删除自己所在的分支
- 可以删除已经合并或者没有变化的分支
- 分支发生变化后只能强制删除
-
合并分支:
- git merge 分支名:合并该分支(会出现分支冲突情况)
- 在 dev 分支上添加或者修改一个文件名,切换到 master 分支上合并 dev 分支,发现也添加了这个文件
- git merge dev 文件名 --合并分支后 master 分支上也出现了 dev 修改的内容,此时 dev 分支就允许被删除
-
分支的本质:
- master 执行的是提交
- HEAD 是执行当前的分支,当前在哪个分支就指向哪个分支
- 当我们切换分支的时候 HEAD 也会跟着切换
- 当进入 .git 文件夹查看 HEAD 的内容的时候,所有的分支不同,文件内部指向就不同
- master 分支
- dev 分支
- Git 的分支与 svn 不同,svn 是整体拷贝一份分支,git 用的是指针
- 如果 dev 发生修改提交,dev 的版本就会向后移动
- 在 master 分支上合并之后就会出现下面的图
-
分支的冲突:
- 我们在 dev 分支里面修改 A.txt 文件添加一行后提交
- 在 master 分支里面修改 A.txt 文件同时添加一行后提交
- 合并后就会出现冲突情况
- <<<<<<<<<<HEAD:当前所指向的分支修改的
- >>>>>>>>>>dev:dev 分支修改的
- 我们需要手动合并,提交该文件
- 我们可以通过图形来查看冲突的提交日志:
- git log --graph