目录
分支管理
-
分支管理的概念
分支就好比做一个房子。水电和室内的装修可以同时进行,分两个不同线路进行,最后汇合将房子做成。
所以分支也就是几条可以独立运行的线路互相之间不会影响。最后可能会汇合将工作完成。分支的应用:
分支在实际应用中还挺广泛的。比如说你要一个做一个项目,每个人完成25%的项目,但是需要两周才能够完成。第一周你只写了50%的代码,如果提交上去的话,不完整的代码会导致别人的无法正常运行。如果等到代码写完了在提交的话又可能会导代码丢失进度的风险。
但是现在有分支之后就好多了,你有了一个属于自己的分支别人看不到,别人还继续在原来的分支上进行工作。但是你在自己的分支上,想提交就提交,直到开发完毕后,在一次性将代码合并到原来的分支上。这样既安全,又不影响别人的工作。
- git分支的详细讲解及原理
-
讲解
git 把我们之前每次提交的版本串成一条时间线,这个时间线就是一个分支。
在没有创建分支之前都只有一条分支。
在git里面叫做 主分支,即 master分支HEAD严格来说不是 指向提交,而是指向master
而master才是指向提交的。所以HEAD指向的就是当前分支。结论就是:
HEAD<指向>分支名<指向>提交
所以HEAD不是直接指向提交得版本的,是间接的指向的。
- 原理:
- 一开始的时候,只有 master 一条主分支,此时的 HEAD指针 指向 master。master 又指向最新的提交
所以每次提交一次版本,它就往前面移动,指向最新的提交。所以这个主线也就越来越长。
- 当创建一个分支 dev 的时候,只是创建了一个 指针dev 并指向与 master相同 的提交。然后将 HEAD 指向 dev指针 。就表示当前的分支在dev上面
所以git创建一个分支很快。只是添加一个 dev 指针,然后修改 HEAD 的指向,整个工作区都没有任何的变化。
- 后面再创建的版本就和 master 没有关系了,是在 dev 分支上的。而 master 指针还是在原来的位置。往后面添加的始终只是 dev 指针
- 当 dev 分支上面的工作做完了的时候。要合并分支,只需要将 master 分支移到 dev 所指的最新提交上面来。在将借来的HEAD还给 master 指针就行。后面再添加就和 dev 没有关系了。
git 合并分支也很快,也就是改改指针,工作区的内容还是不变。
- 分支合并完成后。甚至可以删除 dev 分支 删除dev分支也就是删除dev指针而已。
删除了后,就只剩下一条master 分支
-
- 分支有关的命令
-
命令:
git branch 查看当前所有的分支。 * 号后面接的那个分支就是目前正在使用的分支 git branch <name> 创建新的分支 git checkout <name> 切换分支 git checkout -b <name> 创建并切换新的分支 git merge <name> 快速 合并name分支到当前主分支 值得注意的是前面讲的快速合并(Fast Forword)是 直接将 master 直接移到当前分支指的提交的位置。是git合并一般默认快速合并 有些分支的合并不能够用快速合并。需要注意。 git branch -d <name> 删除某分支
-
使用:
- 查看当前所有的分支
-
创建分支并查看
-
切换分支
-
在新分支中修改文件并提交版本
-
切换回master主分支
切换回master分支发现并没有之前提交的 dev版本1.0 是因为两个分支还有进行快速合并 -
合并dev和master分支
合并完成后可以看到出现了dev版本1.0 -
删除dev分支
删除分支后发现只有主分支 master 了
- 查看当前所有的分支