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
原文地址:https://www.cnblogs.com/huangdengtao/p/13200370.html