回顾:[Git] 017 加一条分支,享双倍快乐 的 "2.3"

1. "Fast-forward"

  • "Git" 在合并分支时会尽可能地使用 "Fast-forward"
  • "Fast-forward" 这种模式会使得删除分支后丢失该分支的信息

1.1 丢失的信息

  • 目前的情况

  • 删除 "conflict" 分支

  • 找茬时间

  • 上图只展示了一部分

1.2 我打个不大恰当的比喻

  • 如果

    • 把非 "master" 分支看作“表演者”
    • 把 "master" 分支看作“观众”
  • 那么
    • “表演结束”(删除分支)后
    • 留给“观众”的是“台上一分钟”(最后一次 "commit" 的内容)
    • 而“台下十年功”(除最后一次以外所有 "commit" 的内容),“观众”是看不到的

2. 如何让“观众”看到“表演者”的“台下十年功”?

2.1 “记者”——"merge" 的参数 "--no-ff" 还在赶来的路上

  • 创建并切至分支

  • 修改 "note_01.txt"

  • 添加并提交

  • 切回 "master" 分支

2.2 有请 "--no-ff" 闪亮登场

  • "--no-ff"

    • 我的出场,意味着禁用 "Fast-forward"
    • 作为一个“记者”,合并这样的事当然要记作一次 "commit",所以用 "-m" 加一句“注释”

2.3 查看一下分支历史

分析

  • 其实上图有三次合并历史
  • 我截了张 "reflog" 的图

  • 这里再次说明了 "Fast-forward" 这种模式会使得删除分支后丢失该分支的信息
  • 加上"--no-ff" 参数合并后能看出来曾经做过合并
  • "Fast-forward" 合并看不出来曾经做过合并
  • 使用 "--no-ff" 参数合并后删除分支,仍能看出来

3. 补充:分支策略

  • 在实际开发过程中

    • "master" 分支需要非常稳定,仅用来发布新版本,平时不在上面干活
    • "dev" 分支并不稳定,因为平时在这里干活
    • 如果要发布新版本,就把 "dev" 分支合并到 "master" 分支上
    • 可能许多人都是从 "dev" 分支上再开一个分支干活;干完活后往 "dev" 分支上合并
  • 示意图

  • 莫名地想到节点电压。。。

[Git] 019 merge 命令的补充的更多相关文章

  1. [Git] 024 log 命令的补充

    0. 回顾 [Git] 009 逆转未来 的 "1" 画张导图 其实 --oneline 前有个"关键字参数" "--pretty" --o ...

  2. [Git] 026 config 命令的补充

    少废话,上例子 1. 让命令更醒目 $ git config --global color.ui true 2. 偷懒 $ git config --global alias.st status 使用 ...

  3. [Git] 012 rm 命令的补充

    0. 前言 [Git] 007 三棵树以及向本地仓库加入第一个文件 的 "2.5" 有提及 git rm --cached <file> 1. 介绍 git rm &l ...

  4. Git中的merge命令实现和工作方式

    想象一下有例如以下情形:代码库中存在两个分支,而且每一个分支都进行了改动.最后你想要将当中的一个分支合并到其它的分支中.个人博客网址 http://swinghu.github.com/ 那么要问合并 ...

  5. Git中的merge命令实现中出现问题及其解决

    Git中的merge命令实现和工作方式 2015年8月17日星期一 丹丹 git代码在合并两个分支的时候总是会出现一下的错误提示,不能正常的完成合并分支,错误提示如图所示: 但是在其他的终端是可以完成 ...

  6. Git合并分支命令:git merge --ff

    今天研究了一下git merge命令常用参数,并分别用简单的例子实验了一下,整理如下: 输入git merge -h可以查看相关参数: --ff  快速合并,这个是默认的参数.如果合并过程出现冲突,G ...

  7. Git合并分支命令参数详解:git merge --ff

    今天研究了一下git merge命令常用参数,并分别用简单的例子实验了一下,整理如下: 输入命令git merge -h可以查看相关参数: --ff  快速合并,这个是默认的参数.如果合并过程出现冲突 ...

  8. git merge 命令的使用

    我们把dev分支的工作成果合并到master分支上: $ git merge dev Updating d46f35e..b17d20e Fast-forward readme.txt | 1 + 1 ...

  9. [Git] 008 status 与 commit 命令的补充

    本文的"剧情"承接 [Git] 007 三棵树以及向本地仓库加入第一个文件 1. 对 "status" 的补充 1.1 "status" 有 ...

随机推荐

  1. ZROI 19.08.07模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. "正睿从来没有保证,模拟赛的题目必须原创." "文案不是我写的,有问题找喵老师去."--蔡老师 ...

  2. sudo: pip:command not found问题解决

    python3 sudo apt-get install python3-pip python2 sudo apt-get install python-pip如果还是不行,则按照下面操作 原因:编译 ...

  3. 【CodeChef】LECOINS(同余最短路,背包DP)

    题意:给定n个物品,每个物品可以取无限次,每个物品有两种属性:价值v和颜色c 现在有q个询问,每次询问是否能取出价值和为S的方案,如有多解输出不同颜色种数的最大值 题意:看到BZOJ评论区有好心人说C ...

  4. [CSP-S模拟测试]:优化(贪心+DP)

    题目描述 $visit\text{_}world$发现有下优化问题可以用很平凡的技巧解决,所以他给你分享了这样一道题:现在有长度为$N$的整数序列$\{ a_i\}$,你需要从中选出$K$个不想叫的连 ...

  5. java7和java8新特性

    以下来至网址: http://blog.csdn.net/samjustin1/article/details/52268004 Java7 新特性 1.switch中可以使用字符串了 String ...

  6. leetcode-mid-design-380. Insert Delete GetRandom O(1)

    mycode import random class RandomizedSet(object): def __init__(self): """ Initialize ...

  7. zay大爷的膜你题 D2T2——不老梦(AK梦)

    还是万年不变的外链 这个题.....是最难的....但是不知道为啥扶苏神仙讲完了之后我竟然听懂了.... 所以这个题我要好好写一写 首先我们看一看每一个测试点,来一点点得分 第一个测试点n = 1,直 ...

  8. c# SQLite 判断表、字段是否存在的方法,新增、删除、重命名列

    SQLiteHelper class: using System; using System.Collections.Generic; using System.Text; using System. ...

  9. 阶段3 1.Mybatis_09.Mybatis的多表操作_4 完成account一对一操作-建立实体类关系的方式

    定义user的实体.然后生成getter和setter 定义一个可以封装Account和User的Map type这里虽然是account类型 这一段只能保证account的数据完成.并不能保证use ...

  10. Linux监控命令之==>iostat

    一.使用说明 iostat 是对系统的磁盘I/O 操作进行监控,它的输出主要显示磁盘读写操作的统计信息,同时给出CPU 的使用情况.同vmstat 一样,iostat 不能对某个进程进行深入分析,仅对 ...