• 备注:

  • 知识点

  • 关于分支中的冲突

  • 分支管理的策略

  • 分支策略

备注:

本文参考于廖雪峰老师的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。

知识点

  • git log --graph --pretty=oneline --abbrev-commit查看分支合并情况

  • git log --graph查看分支合并图

  • 当两个分支修改同一个文件时,可能发生两个分支不能自动合并的问题,需要手动解决冲突(合并时,Git将冲突标识了出来),然后再次提交,即可完成合并。

  • 使用参数--no-ff禁用快合并模式,git merge --no-ff -m"merge with no-ff" dev,合并

关于分支中的冲突

如下,新建一个分支dev2,并且在新分支上开发:

$ git checkout -b dev2切换到一个新分支 'dev2'

修改readme.txt,添加一行。

Creating a new branch is quick AND simple.
  • 在dev2分支进行提交,
$ git add readme.txt$ git commit -m"add new line at readme on dev2"[dev2 4a097db] add new line at readme on dev2 1 file changed, 1 insertion(+)
  • 切换到master分支,同时在master上修改readme文件(添加域dev2分支上文件不同的内容,Creating a new branch is quick & simple.),并且提交
git checkout master切换到分支 'master'您的分支领先 'origin/master' 共 1 个提交。  (使用 "git push" 来发布您的本地提交)
$ git add readme.txt$ git commit -m"add new line at readme on master"[master d562bf7] add new line at readme on master 1 file changed, 1 insertion(+)

如上,Git会自动提示当前master分支比远程origin/master分支领先一个提交

现在master分支和dev2 分支都有了各自新的提交,在这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,由于同时都修改了同一行内容,此时会有冲突。

$ git merge dev2自动合并 readme.txt冲突(内容):合并冲突于 readme.txt自动合并失败,修正冲突然后提交修正的结果。

Git提示自动合并存在冲突,冲突文件是readme,需要修正冲突然后提交修正后的结果

如果用git status查看看当前状态

$ git status位于分支 master您的分支领先 'origin/master' 共 2 个提交。  (使用 "git push" 来发布您的本地提交)您有尚未合并的路径。  (解决冲突并运行 "git commit")

未合并的路径:  (使用 "git add ..." 标记解决方案)

  双方修改:readme.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

如上,提示双方修改

  • 查看readme.txt的内容
$ cat readme.txt

`this is a test that I learn and use git version control systemthis is a beginningwofaidognyixie dognxicreate two new branch<<<<<<< HEADCreating a new branch is quick & simple.=======Creating a new branch is quick AND simple.>>>>>>> dev2
  • Git用<<<<<<<=======>>>>>>>标记出不同分支的内容,我们修改如下后保存
Creating a new branch is quick and simple.
  • 修改冲突后提交
$ git add readme.txt$ git commit -m"conflict fixed"[master 8f69de8] conflict fixed

Git提示冲突已经修复,现在masterdev2分支均指向了现在工作区的状态。

  • 使用git log --graph --pretty=oneline --abbrev-commit可以查看分支的合并情况
$ git log --graph --pretty=oneline --abbrev-commit*   8f69de8 conflict fixed|\| * 4a097db add new line at readme on dev2* | d562bf7 add new line at readme on master|/* 03d07d2 modify readme.txt at branch* 036ced2 a push test* 6a0f133 remove test.txt* b5c87d4 add a test file* d5b84bf modifya readme file* 3033dda add a readme file

如上,分支合并和冲突记录

  • 此时可以删除dev2分支
$ git branch -d dev2已删除分支 dev2(曾为 4a097db)。

冲突解决完成

分支管理的策略

通常,合并分支时Git使用Fast forward模式快速合并。但是快速模式删除分支,会丢失分支信息。

强制禁用Fast forward模式,Git会将merge记录为一个新的提交,同时分支历史会记录分支信息。

  • 切换到dev分支,并修改readme文件,同时提交commit
$ git checkout -b dev切换到一个新分支 'dev'$ git add readme.txt$ git commit -m"a new branch"[dev 44dffc0] a new branch 1 file changed, 1 insertion(+)
  • 切换到master分支
$ git checkout master切换到分支 'master'您的分支领先 'origin/master' 共 4 个提交。  (使用 "git push" 来发布您的本地提交)
  • 使用--no-ff参数合并分支dev到当前master,本次合并要创建一个新的commit,所以加上-m参数描述
$ git merge --no-ff -m"merge with no-ff" devMerge made by the 'recursive' strategy. readme.txt | 1 + 1 file changed, 1 insertion(+)
  • 使用git log查看分支合并图
$ git log --graph --pretty=oneline --abbrev-commit*   7c4d427 merge with no-ff|\| * 44dffc0 a new branch|/*   8f69de8 conflict fixed|\| * 4a097db add new line at readme on dev2* | d562bf7 add new line at readme on master|/* 03d07d2 modify readme.txt at branch* 036ced2 a push test* 6a0f133 remove test.txt* b5c87d4 add a test file* d5b84bf modifya readme file* 3033dda add a readme file

分支策略

实际开发中,分支管理应按照以下几点:

  1. master分支是稳定分支,用来发布最新稳定版本,开发中不需要修改它

  2. 开发中尽量在dev中开发,扩展新功能、修复bug等,等到正式版发布时,在将dev分支合并到master上。

  3. 开发人员在dev分支上开发,每个人都有自己的分支,并且往dev分支上合并。

团队合作分支开发

参考

Git教程:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

git 合并冲突_git分支管理的策略和冲突问题相关推荐

  1. git master主分支_Git分支管理策略及简单操作

    前几天整理了一下之前项目的开发代码,当时使用了Git来进行代码版本管理.虽然本人熟悉常用的Git操作,但是对分支的管理经验非常欠缺.拿这个项目来说,在项目中有不下20个分支,每个分支间的继承关系相当之 ...

  2. 【GIT-3】GIT 的基础教程 分支管理 fixbug分支 Featur 冲突处理 标签管理 操作

    2019独角兽企业重金招聘Python工程师标准>>> [转载请注明出处!http://my.oschina.net/u/2337744/] 分支就是科幻电影里面的平行宇宙,当你正在 ...

  3. Git 企业中常用分支管理策略

    Git 企业中常用分支管理策略 一般企业中开发一个项目的分支策略 主分支 master 开发分支 develop 功能分支 feature 预发布分支 release bug 分支 fixbug 其它 ...

  4. Git之(三)Git中常用命令——分支管理

    三.Git中常用命令--分支管理 为什么要使用分支管理? 分支就是科幻电影里面的平行宇宙,也就是当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干 ...

  5. Git学习笔记:分支管理3

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  6. Git学习笔记:分支管理(2)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  7. Git学习笔记:分支管理(1)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  8. Git 最佳实践:分支管理

    5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching ...

  9. 【Java从0到架构师】git 核心原理和分支管理

    git 核心原理和分支管理 核心原理 Git 数据存储结构 git add 流程 - 把数据添加到暂存区 git commit 流程 - 把数据提交到版本库 HEAD 关联关系处理 分支管理 常用命令 ...

最新文章

  1. 摩拜单车正式进军日本,积极拓展海外市场
  2. python必背内容-python必背函数
  3. 文件夹配置文件服务器,服务器文件夹配置文件
  4. centos中文目录换成英文目录
  5. servlet如何使用session把用户的手机号修改_SpringBoot源码学习系列之嵌入式Servlet容器...
  6. awk教程入门与实例练习(三)
  7. HIT Software Construction Review Notes(2-1 Software Lifecycle and Configuration Management)
  8. java ee 类切换_eclipse的工程类型切换
  9. 阿里云镜像加速Docker
  10. linux hg(mercurial)入门
  11. Matlab 显示图像太慢
  12. 华为ICT大赛2016模拟题
  13. 高斯核与高斯核的卷积的结果还是一个高斯核的推导
  14. 光谱数据计算CIE值(三刺激值、CIE1931、CIE1976、CCT)软件
  15. .NET EF~Entity Framework详解(lambda表达式、linq到EF)
  16. 配置localhost
  17. 多核cpu的缓存一致性
  18. 苹果为何在中国一南一北设两个研发中心?五重考量
  19. 使用Unity制作VR全景图片清晰度的问题!!!
  20. 你的睡眠时间和睡眠质量达标了么

热门文章

  1. 【LOJ#572】Misaka Network 与求和(莫比乌斯反演/杜教筛/min_25筛)
  2. Codeforces Round #619 (Div. 2) E. Nanosoft 思维 + 二维前缀和
  3. loj#2143. 「SHOI2017」组合数问题
  4. P2761 软件补丁问题
  5. 洛谷P3357:最长k可重线段集问题(网络流)
  6. P2805-[NOI2009]植物大战僵尸【网络流,最大权闭合图】
  7. 纪中2019(上)游记+总结
  8. zoj1610-Count the Colors【线段树】
  9. 【贪心】逃跑(jzoj 1748)
  10. 【贪心】失意(jzoj 2318)