参考链接廖雪峰git教程:https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

1.分支创建

创建本地分支:

  1. $ git branch testing  #创建一个分支,并命名为testing

创建远程分支(分两步):

  1. $ git branch testing    #创建一个分支,并命名为testing
  2. $ git push origin testing #将分支推送到远程(相当于创建一个远程分支)

2.分支切换

  1. $ git switch master  #切换到testing分支,即HEAD指向testing分支(在Git2.23及以上的版本中使用)
  2. $ git checkout testing  

3.分支创建及切换

  1. $ git switch -c dev  #创建dev分支,然后切换到dev分支(在Git2.23及以上的版本中使用)
  2. $ git checkout -b dev

4.合并分支

  1. $ git merge dev  #合并指定的dev分支到当前分支

5.删除分支

删除本地分支

  1. $ git branch -d [branch name]  #删除分支,git branch --merged结果中的分支可以进行删除
  2. $ git branch -D [branch name]  #强制删除分支,git branch --no-merged结果中的分支可以进行强制删除

删除远程分支

  1. $ git push origin :temp      #删除远程分支

6.查看

  1. $ git branch  #查看所有分支及当前分支
  2. $ git branch -v  #查看每一个分支的最后一次提交
  3. $ git branch --merged  #查看哪些分支已经合并到了当前分支,结果中的分支可以进行删除
  4. $ git branch --no-merged  #查看哪些分支未合并到当前分支,结果中的分支不能删除

7.分支使用流程

  1. $ git switch -c dev  #创建并切换到新的分支dev
  2. $ git branch    #查看当前的分支,确定结果是dev分支
  3. $ git add readme.txt  #修改文件后,在dev分支上暂存文件
  4. $ git commit -m 'branch test'  #在dev分支提交文件
  5. $ git switch master  #dev分支工作完成,切换回master分支
  6. $ git merge dev    #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了
  7. $ git branch -d dev   #此时可以放心地删除dev分支的了
  8. $ git branch    #删除后确认,dev分支不在了

8.遇到冲突时的分支合并流程

  1. $ git switch -c dev  #创建并切换到新的分支dev
  2. $ git branch    #查看当前的分支,确定结果是dev分支

¥ 修改readme.txt文件

  1. $ git add readme.txt  #修改文件后,在dev分支上暂存文件
  2. $ git commit -m 'branch test'  #在dev分支提交文件
  3. $ git switch master  #dev分支工作完成,切换回master分支

¥ 修改readme.txt文件

  1. $ git add readme.txt  #修改文件后,在master分支上暂存文件
  2. $ git commit -m 'master branch test'  #在master分支提交文件
  3. $ git merge dev    #把dev分支的修改合并到当前的master分支,此时master分支文件的内容和dev分支上的内容一样了

此时,GIt无法执行“快速合并”,必须手动解决冲突后再提交:

$ git status  #查看产生冲突的文件:

此时在本地打开产生冲突的文件:

手动删除两个内容中的一个(包括<<<<<<和======标记)

  1. $ git add readme.txt  #修改文件后,在master分支上暂存文件
  2. $ git commit -m 'conflict fixedt'  #在master分支提交文件
  3. $ git branch -d dev   #删除dev分支

工作完成。

9.BUG分支流程

a.  保存现场

  1. $ git stash

b.恢复现场

  1. $ git stash apply stash@{0}  #恢复stash@{0}现场
  2. $ git stash drop stash@{0}  #删除stash@{0}现场
  3.  
  4. $ git stash pop stash@{0}  #恢复的同时也删除stash@{0}现场

c. bug分支流程

  在软件开发中,你正在dev分支中工作。突然接到一个修复代号101bug的任务时,你会很自然的从master分支创建一个分支Bug-101来修复他。但是dev分支上的工作只进行到了一半,还没法提交,此时你可以使用git stash指令存储当前工作现场,等以后恢复现场后在dev分支上继续工作。

当master分支上修复了bug后,因为dev分支是早期从master分支分出来的,所以,这个bug在当前dev分支上也存在。我们可以使用git cherry-pick <commit>把git commit提交所做的修改“复制”到dev分支。

  1. $ git ***   #你现在在dev分支上工作
  2. $ git stash  #保存现场
  3. $ git switch master  #切换到主分支
  4. $ git switch -c Bug-101  #创建Bug-101分支,并切换

¥101Bug 修复工作

  1. $ git add readme.txt
  2. $ git commit -m "fix bug-101"  #提交修复的文件,修复工作完成

  1. $ git switch master  #切换到主分区
  2. $ git merge --no-ff -m "merge bug fix 101"  #合并bug-101分支到master分支
  3. $ git branch -d Bug-101  #删除Bug-101分支
  4. $ git switch dev  #切换到修复101bug之前的工作分支
  5. $ git stash list  #查看保存的工作现场信息
  6. $ git stash pop  #恢复现场,并删除保存的现场内容

  在master分支上修复了bug后,我们要想一想,dev分支是早期从master分支分出来的,所以,这个bug其实在当前dev分支上也存在。我们只需要把6560f7c fix bug 101这个git commit提交所做的修改“复制”到dev分支。

  1. $ git cherry-pick 6560f7c  #将master分支指定的git commit提交复制到当前的dev分支

10.分支策略

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

  首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。所以,团队合作的分支看起来就像这样:

Git学习笔记4-分支的更多相关文章

  1. git 学习笔记 --Bug分支

    软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接到一个修复一 ...

  2. git学习笔记09-bug分支-自己的分支改到一半了-要去改bug怎么办?

    当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue-101来修复它,但是,等等,当前正在dev上进行的工作还没有提交: 并不是你不想提交,而是工作只进行到一半,还没法 ...

  3. Git学习笔记五--分支管理

    为什么要引入分支? 分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了.如果等代码全部 ...

  4. git 学习笔记--Feature分支

    软件开发中,总有无穷无尽的新的功能要不断添加进来. 添加一个新功能时,你肯定不希望因为一些实验性质的代码,把主分支搞乱了,所以,每添加一个新功能,最好新建一个feature分支,在上面开发,完成后,合 ...

  5. GIT学习笔记(4):远程分支

    GIT学习笔记(4):远程分支 远程分支 远程分支是什么 远程分支是对远程仓库中的分支的索引.它们是一些无法移动的本地分支:只有在GIT进行网络交互时才会更新.远程分支就是书签,提醒着你上次连接远程仓 ...

  6. GIT学习笔记(3):分支管理

    GIT学习笔记(3):分支管理 何谓分支 GIT是如何存储数据的 GIT不是存储文件差异或者变化量,而是一系列文件的快照.在Git提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容 ...

  7. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  8. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  9. git 学习笔记6--remote & log

    git 学习笔记6--remote & log 创建SSH Keys ssh-keygen -t rsa -C "1050244110@qq.com" 本地关联远程 git ...

  10. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

随机推荐

  1. c# 第30节 类字段与属性

    本节内容: 1:字段是什么 2:属性判断字段的安全 3:对属性的解释 1:字段是什么 字段其实在上一节我们就使用过了:再来详细的说他一说 amespace cw { public enum gende ...

  2. 如何下载安装MySQL 解压版和安装版以及2个版本的区别

    参考链接:https://blog.csdn.net/qq_33800083/article/details/80722829

  3. 这一次,彻底弄懂 JavaScript 执行机制

    本文转自https://juejin.im/post/59e85eebf265da430d571f89#heading-4 本文的目的就是要保证你彻底弄懂javascript的执行机制,如果读完本文还 ...

  4. 【正则】day01

    正则表达式一.概述    验证    网络爬虫. 概念:    具有语法格式的字符串. 函数    PCRE    1.perl语言正则语法兼容.(java c)    2.速度快,效率高.    P ...

  5. EF直接更新数据(不需查询)

    //0.0创建修改的 实体对象 Models.BlogArticle model = new BlogArticle(); model.AId = ; model.ATitle = "新的数 ...

  6. python 学习常见问题笔记

    1.for...if...构建List segs = [v for v in segs if not str(v).isdigit()]#去数字 https://www.cnblogs.com/eni ...

  7. Exercises for IN1900

    Exercises for IN1900October 14, 2019PrefaceThis document contains a number of programming exercises ...

  8. Java-100天知识进阶-GC种类-知识铺(六)

    知识铺: 致力于打造轻知识点,持续更新每次的知识点较少,阅读不累.不占太多时间,不停的来唤醒你记忆深处的知识点. 一.GC回收器的 4个指标: 1.Throughput,非gc时间与总运行时间的比重. ...

  9. HTML+CSS基础 权重的计算 权重计算规则

    权重的计算 将选择器上面的选择器进行叠加,叠加后的总和就是该选择器的权重. 权重计算规则

  10. 如何忽略Findbugs的bug

    如何忽略Findbugs的bug 除了用xml的形式去忽略一些文件和bug.最好用的还是注解: 下面的方法会有MT_CORRECTNESS和STYLE的bug.注解忽略方法为: @edu.umd.cs ...