了解分支

如果想实现多人协作、划出Bug区、Feature区等功能,就需要分支功能。(确实很强大的地方)

每次commit时,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。而此时HEAD也指向master

每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也越来越长。

当我们创建新的分支dev的时候,将HEAD指向dev,这时候就在dev分支上了。

创建和进入分支

创建分支:git branch 分支名字

进入分支:git checkout 分支名字

创建并且进入分支:git checkout -b 分支名字

如果想查看当前在哪个分支:git branch

合并分支

如果在dev分支下提交一张照片,此时,工作区是有照片的(在文件夹查看)。然后切换到master分支,会发现本地的工作区被刷新了一下,然后图片不见了。在命令行ls查看文件列表也没有图片(如截图所示)。此时,需要将dev分支合并到master分支

合并分支:git merge 分支名字。将分支合并到当前分支。这时可以发现,照片出现了。(附截图)

注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward。

如果加上--no-ff参数就是普通合并模式。这样就保留了历史信息。

解决分支冲突

如果两个或多个分支对同一文件作出不同的操作,合并的时候就会有冲突
如下面截图先在dev中修改txt,再在master中作出不同的修改。

此时,git merge dev就会报错,提醒有冲突,需要手动解决

当然,也可以通过git status查看,会发现both modified的错误提示。或者cat temp.txt,不同分支的修改的不同之处被标注了出来。

在当前分支修改文件内容并且再次提交修改,即可以解决冲突。

删除分支

一条命令:git branch -d 分支名字即可删除

如果分支还未合并到当前分支:git branch -D 分支名字 强制删除。

团队协作(分支策略)

在实际开发中,我们应该按照几个基本原则进行分支管理:

  1. 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

  2. 那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

  3. 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了

  4. 最后发布时,再将dev合并到master


欢迎进一步交流本博文相关内容:

博客园地址 : http://www.cnblogs.com/AsuraDong/

CSDN地址 : http://blog.csdn.net/asuradong

也可以致信进行交流 : xiaochiyijiu@163.com

欢迎转载 , 但请指明出处  :  )


最新文章

  1. Quartz2D复习(二) --- 手势解锁
  2. hdu 4091 线性规划
  3. solace
  4. P140、面试题24:二叉搜索树的后序遍历序列
  5. #pragma alloc_text 与 ALLOC_PRAGMA
  6. Java基础知识强化之集合框架笔记37:用户登录注册案例
  7. thinkphp 中js 实现刷新
  8. MVC4 + EF + System.Threading.Thread 出现的问题记录
  9. ASP.NET MVC 学习之路-2
  10. stm32之ADC
  11. squid+apache实现缓存加速
  12. git submodule相关操作
  13. 构建纯TypeScript应用
  14. Django表单字段汇总
  15. 【Android】android:windowSoftInputMode属性详解
  16. 深入理解JVM(8)——类加载的时机
  17. Go学习笔记02-基本语法
  18. C++ 方阵原地旋转90度
  19. SQL-4查找所有已经分配部门的员工的last_name和first_name(自然连接)
  20. sqlalchemy根据数据库结构生成映射的实体

热门文章

  1. cached
  2. 安装RPM包或者安装源代码包
  3. bzoj2131: 免费的馅饼
  4. JSP页面规格化
  5. maven的pom.xml文件错误
  6. [Swift通天遁地]四、网络和线程-(4)使用Alamofire实现网络请求
  7. oracle学习笔记(二十) 子程序——函数与触发器
  8. C# 的反射和映射
  9. ASP.NET MVC5 之数据迁移
  10. BZOJ 2946 SA/SAM