4.分支管理
1.分支创建与合并的原理
一开始master
分支是一条线,Git用master
指向最新的提交,在用HEAD
指向master
,就能确定当前分支,以及当前分支的提交点。master
是指向提交的,HEAD
是指向master
的
每次提交,master
分支都会向前移动一步,这样随着你不断提交,master
分支的线也越来越长。每当我们创建新的分支,例如dev
时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上:
从现在开始,对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变:
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上。Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交,就完成了合并:
所以Git合并分支也很快!就改改指针,工作区内容也不变!
合并完分支后,甚至可以删除dev
分支。删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支:
2.分支指令操作
创建分支
git branch dev
切换分支
git checkout dev
查看当前分支
git branch
合并分支
git merge dev #把dev合并到master上
删除分支
git branch -d dev
3.解决冲突
当分支和master
分支上的内容出现冲突时。也就是master
和新分支上都有了新的提交时,这时无法快速合并分支。必须手动解决冲突后在提交。
4.禁止Fast forward模式
在合并分支时,如果使用Fast forward
模式,删除分支后,就会丢掉分支信息。如果禁止使用Fast forward
模式,使用普通的分支合并。就可以看出分支信息。
禁用Fast forward
git merge --no-ff -m "merge with no-ff" dev
5.现场保存
当你正在Git上修改一个bug时,遇到另外一个bug需要马上修改。此时需要保存现在修改的环境和代码。
保存工作现场
git stash
查看保存
git stash list
恢复工作现场
a.恢复现场后,stash
内容并不删除。需要手动删除
git stash apply # 恢复现场
git stash drop # 删除stash list
b.恢复现场的同时把stash
内容删除
git stash pop
6.推送分支
查看远程库的信息
远程仓库的默认名为origin
git remote -v
推送分支
git push origin master # 推送到主分支
git push origin dev # 推送到dev分支
7.git rebase
把本地未push的分叉历史整理成直线
git rebase