1.分支的新建与合并使用场景介绍

  让我们来看一个简单的分支新建与分支合并的例子,实际工作中你可能会用到类似的工作流。 你将经历如下步骤:

  1. 开发某个网站。

  2. 为实现某个新的需求、问题(#53问题),创建一个分支(名为:iss53)。

  3. 在这个分支上开展工作。

  正在此时,你突然接到一个电话说有个很严重的问题需要紧急修补。 你将按照如下方式来处理:

  1. 切换到你的线上分支(production branch)。

  2. 为这个紧急任务新建一个分支(名为:hotfix),并在其中修复它。

  3. 在测试通过之后,切换回线上分支(名为:master),然后合并这个修补分支,最后将改动推送到线上分支,并删除hotfix分支。

  4. 切换回你最初工作的分支(iss53)上,继续工作。

  5. iss53问题处理完后,合并到master主干上,删除iss53分支。

2、新建分支

  首先,我们假设你正在你的项目上工作,并且已经有一些提交。

  

  这是一个简单提交历史

  现在,你已经决定要解决你的公司使用的问题追踪系统中的 #53 问题。 想要新建一个分支并同时切换到那个分支上,idea上操作如下:

  

  填写分支名称

  

  在iss53分支上开发,如下

  

  将分支推送到远程仓库

  

  点击push推送到远程仓库

  

  在远程仓库查看是否有iss53分支

  

  分支的创建与提交完成!

3、开发iss53的过程中新建分支(hotfix)解决线上问题后,并删除该分支

  分支随着工作的进展向前推进

  现在你接到那个电话,有个紧急问题等待你来解决。 有了 Git 的帮助,你不必把这个紧急问题和 iss53 的修改混在一起,

  你也不需要花大力气来还原关于 53# 问题的修改,然后再添加关于这个紧急问题的修改,最后将这个修改提交到线上分支。 你所要做的仅仅是切换回 master 分支。

  idea上操作如下:

  

  特别注意:在你这么做之前,要留意你的工作目录和暂存区里那些还没有被提交的修改,它可能会和你即将检出的分支产生冲突从而阻止 Git 切换到该分支。 最好的方法是,在你切换分支之前,保持好一个干 净的状态。 有一些方法可以绕过这个问题(即,保存进度(stashing) 和 修补提交(commit amending)),我们会在 储藏与清理 中看到关于这两个命令的介绍。

   这个时候,你的工作目录和你在开始 #53 问题之前一模一样,现在你可以专心修复紧急问题了。

   请牢记:当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。

  Git 会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样。

  接下来,你要修复这个紧急问题。 让我们建立一个针对该紧急问题的分支(hotfix branch),在该分支上工作直到问题解决:

  

  这个时候,git的分支结构图如下:

  

  基于 master 分支的紧急问题分支 hotfix上进行代码开发,模拟如下:
  

  你可以运行你的测试,确保你的修改是正确的,然后提交代码到远程仓库,提交到远程仓库的操作与刚才提交iss53操作一样。

  当hotfix这个紧急问题的分支开发完成后,将其合并回你的 master 分支来部署到线上。 你可以使用idea的 git merge来达到上述目的:

  首先切换到master

  

  然后,以master为主线合并hotfix,这个很重要,因为是以master为主,将hotfix的的代码合并到master上,不要把顺序弄返

  

  现在,最新的修改已经在 master 分支所指向的提交快照中,这是你只需要提交master到远程仓库(非常重要,千万别忘记),你可以着手发布该修复了。

  此时,git的分支结构图如下:

  

  搞定,这时候紧急问题已解决,并且顺利的合并到了master主线上,接下来我们就应该删除分支hotfix

  删除本地仓库分支hotfix

  

  删除远程仓库分支hotfix

  

4、回到分支iss53上继续工作,工作完后合并到master,并删除iss53分支

  回到iss53分支上

  

  当前git分支结构如下图:

  

  继续在分支iss53上写代码

  

  iss53开发完成,提交到远程分支(同之前操作一样,图略);

  切换到master分支(同之前操作一样,图略);

  将iss53分支合并到master分支上(同之前操作一样,图略),此时的分支结构图如下:

  

  删除本地iss53分支(同之前操作一样,图略);

  删除远程iss53分支(同之前操作一样,图略);

  完美!

图文理解不到位,二麻二麻的,直接视频学习:视频学习

感谢您的阅读,扫描下方二维码,获取更多资料,如果您觉得阅读本文对您有帮助,请点一下 “推荐”按钮, 您的“推荐”将是我最大的写作动力!
欢迎各位转载,但必须在文章页面中给出作者和原文链接!

idea中git分支、合并与使用的更多相关文章

  1. Git分支合并冲突解决

    前2天群里发了张git历史图,如下: 根据提交历史,可以看出图中所有分支合并都采用merge的方式,具体merge是怎么操作的,可以阅读下边文章. 根据项目上的需求,如果要求git提交历史是比较简单的 ...

  2. Git分支合并冲突解决(续)

    接Git分支合并冲突解决,在使用rebase合并冲突情况下,如果不小心,执行完add后执行了commit,此时本地仓库HEAD处于游离态(即HEAD指向未知的分支),如何解决? 解决方法 (1)此时, ...

  3. git分支合并解决冲突

    git分支合并,解决冲突 1.手动解决冲突 手动解决冲突,需要使用编辑器,把所有文件中出现的冲突地方修改,然后再添加到暂存区再提交 >>>>>>brancha so ...

  4. git 分支合并时如何忽略某个文件

    [转]git 分支合并时如何忽略某个文件 - 神奇的旋风 - 博客园 https://www.cnblogs.com/xuan52rock/p/13268872.html Git - git-merg ...

  5. Git 分支合并

    理解核心 Git最初只有一个分支,所有后续分支都是直接或间接的从这个分支切出来的. 在任意两个分支上,向前追溯提交记录,都能找到一个最近的提交同时属于这两个分支,这个提交就是两个分支的分叉节点 分支合 ...

  6. Git分支合并选择

    用Git进行多人协作开发时,必然会合并代码,解决冲突.然而合并代码也是需要点技巧的,如果对一些关键命令没有理解去使用的话,git的版本演进路线就会变得很乱,从而造成了日后维护的一些麻烦. Git上合并 ...

  7. git 分支合并处理

    Git 分支 - 分支的新建与合并 https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%85%B3%E4%BA%8E%E7%89%88%E6%9 ...

  8. git分支合并冲突

    合并冲突 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,Git 就没法干净的合并它们. 如果你对 #53 问题的修改和有关 hotfix 的修改都涉及到同一个文件的同一处,在合并 ...

  9. idea中git分支的使用

    转载自 https://blog.csdn.net/qq_34745957/article/details/80288065 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有 ...

随机推荐

  1. hdu3015,poj1990树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3015 题意:给定n组数,每组数有值x和值h,求n组数两两的val的总和.将所有x和所有h分别离散化(不 ...

  2. python列表式推导

    1.基本语法 [表达式 for 变量 in 列表] 或者  : [表达式 for 变量 in 列表 if 条件] 2.示例 生成列表 li=[x for x in range(10)] print(l ...

  3. 【JS】325- 深度理解ES6中的解构赋值

    点击上方"前端自习课"关注,学习起来~ 对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重 ...

  4. 刷新.NET

    .NET Core 发布的那一天起,它在完成自我刷新的过程,一切为了适应未来,云原生.不仅仅跨平台那么简单. .NET Core 未来发展路线 我们发现跳过了.NET Core 4.X 避免了和目前. ...

  5. Rabbit安装(单机及集群,阿里云)

    Rabbit安装(单机及集群,阿里云) 前言 虽然我并不是部署人员,但是自己私人测试环境的各类东东还是得自己安装的. 尤其在规模不大的公司,基本安装部署工作都是后端的份内之事. 那么最令人痛苦的,莫过 ...

  6. nginx代理grafana

    希望通过Nginx为服务器上的grafana进行代理,实现通过在当前域名后加/grafana在公网进行访问,开始按照百度的方法弄了几个小时都不行,后面仔细看了官方的文档才弄好,Mark一下. Ngin ...

  7. 利用 DFA 算法实现文字过滤

    一.DEA 算法简介 在实现文字过滤的算法中,DFA是唯一比较好的实现算法. DFA 全称为:Deterministic Finite Automaton,即确定有穷自动机.其特征为:有一个有限状态集 ...

  8. 解决 Windows Docker 安装 Gitlab Volume 权限问题

    本文首发于我的个人博客,解决 Windows Docker 安装 Gitlab Volume 权限问题 ,欢迎访问! 记录一下 Windows10 下 Docker 安装 Gitlab 的步骤. Ca ...

  9. 设备数据通过Azure Functions 推送到 Power BI 数据大屏进行展示(1.准备工作)

    本案例适用于开发者入门理解Azure Functions/ IoT Hub / Service Bus / Power BI等几款产品. 主要实战的内容为: 将设备遥测数据上传到物联网中心, 将遥测数 ...

  10. web 自动化遇到 shadowDOM 节点你会操作吗?

    本文转载自: http://www.lemfix.com/topics/971 近期有同学在做web自动化的时候,发现页面上有些元素,在selenium中无法通过xpath来定位,各种原因找了半天,都 ...