hincky的主页 hincky的主页
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)

Hincky

当有趣的人,做想做的事
  • 学习笔记

    • Vue笔记
    • Vuepress
    • nginx
  • 语言类

    • java
    • go
    • python
    • 设计模式
  • 框架类

    • Spring
    • Spring Security
    • Mybatis
  • 容器技术

    • docker
    • k8s
    • helm
    • prometheus
    • grafana
    • jenkins
  • 命令集合

    • linux命令
    • docker命令
    • git命令
    • vim命令
    • k8s命令
  • 数据库

    • sql
    • mysql
  • 协议

    • 网络模型
    • http/1.1
    • WebSocket
    • http/2
    • TLS/SSL
    • tcp
    • IP
    • tcpdump抓包命令
    • wireshark抓包工具
  • 通用

    • Git
  • 技术分享

    • git push/pull总是超时怎么办
    • idea debug技巧
    • postman使用
    • 问题总结
    • idea使用技巧
  • Oauth2

    • Oauth2原理
  • 项目列表

    • redis项目
    • 微服务项目
  • 分类
  • 标签
  • 归档
  • 随笔
GitHub (opens new window)
  • 数据库

  • 网络协议以及抓包工具

  • Git笔记

    • 手册

    • 文档笔记

      • Git基础与命令
        • Git基础
          • 全局配置
          • 检查配置信息
          • 获取帮助
          • 初始化仓库
          • 克隆远程仓库
          • 检查文件状态
          • 加入暂存区 (跟踪文件)
          • 忽略文件
          • 查看修改的具体内容
          • 提交更新
          • 跳过使用暂存区域
        • Git 基础 - 查看提交历史
        • Git 基础 - 撤消操作
        • Git 基础 - 远程仓库的使用
          • 查看远程仓库
          • 添加远程仓库
          • 从远程仓库中抓取与拉取
          • 推送到远程仓库
          • 查看某个远程仓库
          • 远程仓库的重命名与移除
        • Git 基础 - 打标签
          • 列出标签
          • 创建标签
          • 附注标签
          • 轻量标签
          • 后期打标签
          • 共享标签
          • 删除标签
          • 检出标签
        • Git 命令别名
      • Git分支-分支原理
        • Git分支的新建与合并-分支操作
          • Git分支管理-查看分支
            • Git分支开发工作流
              • Git分支-远程分支
                • Git分支-变基
                  • 变基的基本操作
                    • 概念
                    • 原理
                    • 步骤
                    • 优点
                  • 更有趣的变基例子
                    • 更有趣的变基例子
                    • --onto选项
                    • 省去先切换到源分支的步骤
                  • 变基的风险
                    • 金科玉律
                    • 变基的实质
                  • 用变基解决变基
                  • 变基 vs. 合并
                • Git工具-查看修订版本
                  • 单个修订版本
                  • 简短的 SHA-1
                    • 查看给定SHA-1值的提交
                  • 分支引用
                    • 查看最后一次提交
                  • 引用日志
                    • HEAD的指向历史
                  • 祖先引用
                  • 提交区间
                    • 双点
                    • 查看即将推送到远端的内容
                    • 多点
                    • 三点
                • Git工具-交互式暂存
                  • 暂存与取消暂存文件
                  • 暂存补丁
                • Git工具-重写历史
                  • 修改最后一次提交
                    • 修改提交信息
                    • 修改实际内容
                  • 修改多个提交信息
                  • 重新排序提交
                  • 压缩提交
                  • 拆分提交
                  • 核武器级选项:filter-branch
                    • 从每一个提交中移除一个文件
                    • 使一个子目录做为新的根目录
                    • 全局修改邮箱地址
                • Git工具-重置揭密
                  • 三棵树
                    • HEAD
                    • 索引
                    • 工作目录
                  • 工作流程
                  • 重置的作用
                    • 第 1 步:移动 HEAD
                    • 第 2 步:更新索引(--mixed)
                    • 第 3 步:更新工作目录(--hard)
                    • 回顾
                  • 通过路径来重置
                  • 压缩
                  • 检出
                    • 不带路径
                    • 带路径
                  • 总结
            • 技术分享

            • Oauth2

            • 计算机相关技术
            • Git笔记
            • 文档笔记
            xugaoyi
            2020-11-18
            目录

            Git分支开发工作流

            # Git分支开发工作流

            文档:Git分支开发工作流 (opens new window)

            # 长期分支

            因为 Git 使用简单的三方合并,所以就算在一段较长的时间内,反复把一个分支合并入另一个分支,也不是什么难事。 也就是说,在整个项目开发周期的不同阶段,你可以同时拥有多个开放的分支;你可以定期地把某些主题分支合并入其他分支中。

            许多使用 Git 的开发者都喜欢使用这种方式来工作,比如只在 master 分支上保留完全稳定的代码,开发过程在dev分支,开发完成后并入test分支进行测试,通过测试的稳定代码才并入master分支中。

            dev和test分支不需要保持绝对稳定,但在test通过测试达到稳定状态,就可以被合并入master分支。

            事实上我们刚才讨论的,是随着你的提交而不断右移的指针。 稳定分支(master)的指针总是在提交历史中落后一大截,而前沿分支(dev或test)的指针往往比较靠前。

            你可以用这种方法维护不同层次的稳定性。 一些大型项目还有一个 proposed(建议) 或 pu: proposed updates(建议更新)分支,它可能因包含一些不成熟的内容而不能进入master 分支。 这么做的目的是使你的分支具有不同级别的稳定性;当它们具有一定程度的稳定性后,再把它们合并入具有更高级别稳定性的分支中。 再次强调一下,使用多个长期分支的方法并非必要,但是这么做通常很有帮助,尤其是当你在一个非常庞大或者复杂的项目中工作时。

            # 主题分支 (短期分支)

            主题分支对任何规模的项目都适用。 主题分支是一种短期分支,它被用来实现单一特性或其相关工作。

            你已经在上一节中你创建的 iss53 和 hotfix 主题分支中看到过这种用法。 你在上一节用到的主题分支(iss53 和 hotfix 分支)中提交了一些更新,并且在它们合并入主干分支之后,你又删除了它们。 这项技术能使你快速并且完整地进行上下文切换(context-switch)——因为你的工作被分散到不同的流水线中,在不同的流水线中每个分支都仅与其目标特性相关,因此,在做代码审查之类的工作的时候就能更加容易地看出你做了哪些改动。 你可以把做出的改动在主题分支中保留几分钟、几天甚至几个月,等它们成熟之后再合并,而不用在乎它们建立的顺序或工作进度。

            考虑这样一个例子,你在 master 分支上工作到 C1,这时为了解决一个问题而新建 iss91 分支,在 iss91 分支上工作到 C4,然而对于那个问题你又有了新的想法,于是你再新建一个 iss91v2 分支试图用另一种方法解决那个问题,接着你回到 master 分支工作了一会儿,你又冒出了一个不太确定的想法,你便在 C10 的时候新建一个 dumbidea 分支,并在上面做些实验。 你的提交历史看起来像下面这个样子:

            拥有多个主题分支的提交历史。

            图1. 拥有多个主题分支的提交历史 ▲

            现在,我们假设两件事情:你决定使用第二个方案来解决那个问题,即使用在 iss91v2 分支中方案。 另外,你将 dumbidea 分支拿给你的同事看过之后,结果发现这是个惊人之举。 这时你可以抛弃 iss91 分支(即丢弃 C5 和 C6 提交),然后把另外两个分支合并入主干分支。 最终你的提交历史看起来像下面这个样子:

            合并了  和  分支之后的提交历史。

            图2. 合并了 dumbidea 和 iss91v2 分支之后的提交历史 ▲

            我们将会在 分布式 Git (opens new window) 中向你揭示更多有关分支工作流的细节, 因此,请确保你阅读完那个章节之后,再来决定你的下个项目要使用什么样的分支策略(branching scheme)。

            请牢记,当你做这么多操作的时候,这些分支全部都存于本地。 当你新建和合并分支的时候,所有这一切都只发生在你本地的 Git 版本库中 —— 没有与服务器发生交互。

            编辑 (opens new window)
            #Git
            Git分支管理-查看分支
            Git分支-远程分支

            ← Git分支管理-查看分支 Git分支-远程分支→

            最近更新
            01
            人生前期重要的能力
            05-17
            02
            防火墙命令
            04-11
            03
            docker-compose部署mysql主从集群
            03-22
            更多文章>
            Theme by Vdoing | Copyright © 2022-2023 Hincky | MIT License | 粤ICP备2022120427号
            • 跟随系统
            • 浅色模式
            • 深色模式
            • 阅读模式