1. 概述

    1. 简单描述以下, git branch
    2. 讲解的目的, 只是方便新手入门, 基本都是最简单的操作
      1. 所以东西可能不全

        1. 一是 我不理解
        2. 二是 有的东西出现, 可能会让新手产生误解
  2. 准备

    1. os

      1. win10
    2. git
      1. 2.20.1.windows.1
    3. 工程
      1. 一个 git 项目的工程 即可

1. 分支

  1. 概述

    1. 简单介绍分支
  2. 分支

    1. 概述

      1. 一种方法
      2. 一个代码版本
    2. 方法

      1. 软件开发的基本方法

        1. 从 主线 分离出来的一条 独立的开发先
      2. 特性

        1. 隔离

          1. 分支可以让主线不受到干扰
          2. 分支也可以保存一个相对稳定的版本, 方便继续修正, 而不影响主线
      3. 使用

        1. 隔离特性

          1. 防止新特性, 干扰到主线
        2. 隔离 bug
          1. 一些不太好解的 bug, 也可以使用 分支, 隔离出来
        3. 隔离 版本
          1. 可以专门拉一个旧版本的分支, 在这个分支上修改, 并且不影响新版本
        4. 隔离 阶段
          1. 可以使用不同的分支, 代表 开发, 测试, 线上版本
      4. 副作用

        1. 并行开发

          1. 既然都隔离得那么开了, 并行工作, 就是自然而然的事了
    3. 代码版本

      1. 创建分支后, 获得的 代码产物
  3. 感觉

    1. 分支本质上是一种思想

      1. 目的是 通过隔离, 减少 互相干扰
    2. 基于这种思想, 我们来操作分支

2. 命令

1. 查看分支

  1. 概述

    1. 查看现有分支, 当前分支
  2. 命令

    # 结果
    # * <branchName> 这个表示, 当前分支
    > git branch

2. 创建分支

  1. 概述

    1. 创建新分支
  2. 命令

    > git branch <branchName>
    # 创建完成后, 需要切换过去
    # 后面有 创建并切换 的方法, 不要着急
    > git checkout <branch>
  3. 分支名称

    1. 概述

      1. 分支的名字, 也不是 随便起的
    2. 字符集

      1. 非法

        ~
        ^
        :
        ?
        *
        [
        ..
        各种空白字符
      2. 合法

        1. 非法

          # 不能用这些东西开头
          /
          .
          -
          # 不能用这些东西结尾
          /

3. 更详细的查看 分支

  1. 概述

    1. 一种更详细查看分支的方法
  2. 命令

    # 可以查看全部, 或者只查看某个特定分支
    # 这个命令, 暂时不做解释, 是那种不好讲明白, 但是一用就懂的类型
    > git show-branch [branchName]
  3. 简述

    1. 显示结果

        1. 各个分支

          1. 名称
          2. 最新提交的 comment
          3. 当前状态
          4. 左边还有一个 图例
        1. 提交记录

          1. 首先是 图例
          2. 分支名
          3. 提交 comment

4. 检出分支

  1. 概述

    1. 检出一个别的分支
  2. 场景1: 简单检出一个别的分支

    1. 命令

      # 确保当前分支的所有变动, 已经提交
      > git checkout <branchName>
    2. 结果

      1. 追踪文件的变化

        1. 全部以 新分支 为准
  3. 场景2: 追踪文件有修改, 但是没有提交

    1. 命令

      1. 同 场景1
    2. 结果

      1. git 拒绝切换
      2. git 会提示你, 有内容需要提交, 防止修改丢失
    3. 其他

      1. 如果真的有内容不想提交

        1. -f 强制切换
        2. 借助 stash
  4. 场景3: 分支合并

      1. 这个等到后面 合并 的时候, 一起将
  5. 场景4: 创建新分支, 并切换过去

    1. 命令

      # 以当前分支代码为基础, 切换分支
      > git checkout -b <newBranchName>
  6. 场景5: 无名分支

    1. 场景

      1. 有的时候, 会莫名其妙切换到一个 无名分支

        1. 其实这些情况还是有规律的, 只是我们不熟悉
    2. 操作

      1. 确认当前位置

        1. 直接查看分支即可
      2. 保留操作

        1. 命令

          1. 使用 场景4 的命令即可
      3. 丢弃操作

        1. 命令

          1. 直接切换到别的分支即可

5. 删除分支

  1. 概述

    1. 删除不需要的分支
  2. 命令

    # 首先, 不能删除 当前分支
    > git branch -d <branchName>

ps

  1. ref

    1. Git 版本控制管理(第2版)

      1. 翻译得不太好, 但是内容值得一看
      2. 比 pro git 稍微好入门一些
      3. 我自己整理的东西, 应该不会完全按照它的思路来
  2. 问题: 分支命名

    1. 会出现一些问题

      1. 场景

        1. 当前已经有了 test 分支
        2. 我想创建一个分支名为 test/v1
      2. 结果

        > git branch test/v1
        fatal: cannot lock ref 'refs/heads/test/v1': 'refs/heads/test' exists; cannot create 'refs/heads/test/v1'
    2. 命名分支, 是否有一个 最佳实践

      1. 这个我简单翻阅了下 github 的几个大项目, 目前没有找到
  3. 切分支, 应该也是有风险的

    1. 追踪文件

      1. 这块应该还行
    2. 未追踪文件
      1. 这个东西, 我暂时没有尝试

        1. 书上说, 不会管, 保留原样

          1. p92
  4. 后续

    1. 应该是 分支合并 相关的内容吧
  5. 其他

    1. 2020 年的第一篇技术向博客, 来的有点晚了
    2. 感觉回不到之前那种 高产赛母猪 的状态了

Git - 08. git branch的更多相关文章

  1. [Git]08 如何自动补全命令

     [Git]08如何自动补全命令 如果你用的是 Bash shell,可以试试看 Git 提供的自动完成脚本.下载 Git 的源代码,进入 contrib/completion 目录,会看到一个g ...

  2. [git] 关闭 git branch 的pager

    高版本的git做了pager的调整. git diff git log git branch 等命令都用了pager, 默认的pager用了less 在我的应用里, 通常branch只有那么3,5个. ...

  3. Merge git repo into branch of another repo

    git 两个repo merge You can't merge a repository into a branch. You can merge a branch from another rep ...

  4. git clone all branch and create a empty branch

    /******************************************************************** * git clone all branch and cre ...

  5. Git merge一个branch到另一个branch

    在项目开发过程中,需要merge一个branch (branch名 taskBranch) 到另一个名为develop 的branch 方法: 先保证当前停留在develop的branch上 然后执行 ...

  6. git clone指定branch或tag

    git clone指定branch或tag发布时间:October 28, 2018 // 分类: // No Comments 取完整: git clone https://github.com/a ...

  7. git pull的时候提示git pull <remote> <branch>

    yuanqiao@yuanqiao-PC MINGW64 /h/WorkSpace/git/dadeTest (dev)$ git pullremote: Enumerating objects: 7 ...

  8. Git:Git初体验——Git安装配置

    作为即将成为一个程序员的男人,一直在听别人说Git多好多好,之前也随便了解了一些,但是始终没有决心去学会.现在大四了,只有毕设和一门开学六七周只去过一次课的全员必修课外,也没有什么事情做,何不去做这些 ...

  9. Fighting regressions with git bisect---within git bisect algorithm

    https://www.kernel.org/pub/software/scm/git/docs/git-bisect-lk2009.html Fighting regressions with gi ...

随机推荐

  1. Umi 小白纪实(二)—— model 的注册与使用

    Umi 通常会搭配 Dva 使用,用于管理页面状态和逻辑 一.注册 model 首先需要在 .umirc.js 中启用 dva 插件 export default { plugins: [ ['umi ...

  2. CSP-J2019被虐记

    -------------------------------------- (我菜到连背包都不会) ------------------------------------- 回首一想,今年的pj还 ...

  3. 剑指offer-面试题40-最小的k个数-最大堆

    /* 题目: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. */ /* 思路: 利用最大堆,C++中使用multiset& ...

  4. 【39】为什么使用卷积?(Why convolutions?)

    为什么使用卷积?(Why convolutions?) 我们来分析一下卷积在神经网络中如此受用的原因,然后对如何整合这些卷积,如何通过一个标注过的训练集训练卷积神经网络做个简单概括.和只用全连接层相比 ...

  5. 【笔记】机器学习 - 李宏毅 - 9 - Keras Demo

    3.1 configuration 3.2 寻找最优网络参数 代码示例: # 1.Step 1 model = Sequential() model.add(Dense(input_dim=28*28 ...

  6. Lucene索引维护(添加、修改、删除)

    1. Field域属性分类 添加文档的时候,我们文档当中包含多个域,那么域的类型是我们自定义的,上个案例使用的TextField域,那么这个域他会自动分词,然后存储            我们要根据数 ...

  7. JN_0010:谷歌浏览器启动安全模式,直接打开H5项目

    1,找到桌面chrome 2,复制粘贴一份新的 3,右键属性 4,在目标输入框最末端加上这句(注意空格) --disable-web-security --user-data-dir=D:\chrom ...

  8. QQ全量上云,你想了解的技术细节都在这

    腾讯的业务体量非常庞大,在2019年,腾讯已拥有超过了100万台服务器,其中,社交业务包括QQ和空间的体量有近20万台服务器,且分布在全国三地. 把QQ这头大象搬到云上并非易事.作为腾讯最庞大.最悠久 ...

  9. SSL证书基础知识

    公司要为一个英国的客户提供由HTTP升级到HTTPS的服务,于是接触查询并学习了相关的SSL证书方面的内容,并整理了一翻. I.SSL证书说明 SSL 证书按大类一般可分为 DV SSL .OV SS ...

  10. 对象的三大特性(封装、继承、多态)——java

    一. 面向对象的三大特征 1. 封装---->减少了大量的冗余代码---->封装将复杂的功能封装起来,对外开放一个接口,简单调用即可.将描述事物的数据和操作封装在一起,形成一个类:被封装的 ...