1.版本分支的好处
- 保证主线代码的完整性
例如需要向项目中添加一个新功能,一般的团队都不会直接在主分支上修改,都会新建一个分支,在上面更改代码。这样做的好处就是保证主线代码的完整性和可用性,也就是说,主线上都是稳定的代码,可以直接拿来发布的
- 减少冲突的解决
在自己的分支上开发进行合并与全部在一个主分支上开发进行对比,如果代码提交相对频繁,你将会发现你永远都在解决冲突,如果提交缓慢的话,你还是发现在解决冲突,实际上你并不需要解决太多冲突,很多冲突是没有必要的。
2.Git与SVN分支比较
- 在很多版本控制系统中,构建分支常常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会耗费很多时间。而 Git 的分支模型极其的高效轻量的。
3.Git中分支和Head是什么
- 分支:指向提交对象的可变指针 每次的提交新的提交对象会自动向前移动
- Head指针:指向当前所在的分支,Head分支随着提交操作自动向前移动
4. Git分支的相关命令
- 创建分支 :git branch branchname
其中HEAD指向 该分支上的最后一次提交。这表示 HEAD 将是下一次提交的父结点。通常,理解 HEAD 的最简方式,就是将它看做 当前提交的快照。
-
切换分支 git checkout branchname
-
切换分支时会有三个地方的文件被改变
工作区 :如果当前分支上有只有新建文件没有被提交或者没有被暂存,那么在切换分支git默认会切换 且将新建的文件带到切换后的分支上,那么会污染主分支上的文件
暂存区
HEAD
为了避免当前工作区文件的丢失 每次在切换分支前 提交一下当前分支
-
-
图例:
-
做出修改再提交
-
切回到master
-
合并到主分支上
-
合并原理 :如果 master 分支所指向的提交是你当前提交的直接上游,所以 Git 合并只是简
单的将指针向前移动 -
合并前的指针
- 合并后的的指针
-
# 查看分支列表
git branch
# 查看分支图
git log --oneline --decorate --graph --all
# 创建并且切换分支
git checkout -b branchname
# 版本穿梭(时光机): 新建一个分支并且使分支指向对应的提交对象
git branch branchname commitHash
# 普通删除分支
git branch -d branchname
# 强制删除分支
git branch -D branchname
# 合并分支
# 如果出现冲突 --> 打开冲突的文--->进行修改--->add commit
# 查看合并到当前分支的分支列表,一旦出现在这个列表中 就应该删除
git branch --merged
# 查看没有合并到当前分支的分支列表,一旦出现在这个列表中 就应该观察一下是否需要合并
git branch --no-merged