首页 > 其他分享 >git merge请使用 `--no-ff`

git merge请使用 `--no-ff`

时间:2024-03-07 16:24:06浏览次数:28  
标签:git no -- merge ff commit 分支

三种模式

fast-forward
--squash
--no-ff

image

fast-forward

Git 合并两个分支时,如果顺着feature分支走下去可以到达main分支的话(main分支在feature分支开发期间没有新的提交),那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward)。

一旦删除分支或者分支指针往前走,很难体现该处提交是合并自某个分支的。

--squash

把一些不必要commit进行压缩,比如说,你的feature在开发的时候写的commit很乱,那么我们合并的时候不希望把这些历史commit带过来,于是使用–squash进行合并。

此时代码文件内容已经同合并后一样,但不移动HEAD,不提交。需要进行一次额外的commit来“总结”一下,然后完成最终的合并。这样就简化掉了中间开发过程中的很多杂乱的commit 信息。

--no-ff

关闭fast-forward模式,在提交的时候,会创建一个merge的commit信息,然后和master分支合并。

一般只要不是两个分支同时编辑了同一个文件的相同部分,就不会有冲突。所以这是能自动merge的模式,也是比较常用的模式。

结论

一般而言,我们在开发中都保存好每次commit信息,无论是主分支,功能分支,特性分支。
所以最常用的情况是携带--no-ff参数进行merge

如果提交的commit信息太多,希望简化commit信息,比如开发周期很紧没有详细记录commit信息,则使用--squash在merge时做一次总的commit信息汇总。

Reference

  1. 廖雪峰-分支管理策略
  2. git merge 的三种常用模式简介

标签:git,no,--,merge,ff,commit,分支
From: https://www.cnblogs.com/guanghui-hua/p/18059148

相关文章

  • 3DSSD
    PDF:https://arxiv.org/abs/2002.10187CODE:https://github.com/dvlab-research/3DSSD一、大体内容3DSSD是基于点的单阶段3D目标检测器,其提出的动机主要是基于体素的方法(如VoxelNet、PointPillar)在转换体素的时候会丢失信息,而基于点的目标检测方法大都是两阶段方法(如:PointRCN......
  • 若依集成CIM(即时推送系统)实现将服务端修改为SpringBoot+Vue前后端分离版(文末见代码
    ​ 场景若依前后端分离版本地搭建开发环境并运行项目的教程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662 CIMGitee地址:https://gitee.com/farsunset/cimCIM项目是基于mina或者netty框架下的推送系统,我们平常使用第三方的推送SDK,如极光推送,百度......
  • 笛卡尔乘积
    SQL中的笛卡尔积SQL中的笛卡尔积是数学集合论中的一个术语。但是,我们也可以在SQL数据库手册中找到这个术语。它意味着什么,我们应该如何使用它?让我们来学习一下。两个集合X和Y的笛卡尔积,表示为X×Y,是所有有序对的集合,其中x在X中,y在Y中。就SQL而言,笛卡尔积是......
  • Scanner对象
    前言之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过scanner类来获取用户的输入基本语法代码Scannerstr=newScanner(System.in);通过Scan......
  • Spring-@ControllerAdvice-全局处理注解
    1,@ControllerAdvice介绍@ControllerAdvice是Spring框架提供的一个注解,用于定义全局的异常处理器和全局数据绑定。它通常用于集中处理应用程序中的异常,并提供统一的异常处理逻辑。2,@ControllerAdvice的基本使用packageorg.springframework.web.bind.annotation;importj......
  • spring-JSON序列化
    1,使用场景。SpringBoot默认json为JackJson。在Controller需要返回Json数据时,我们使用了RestController,如果想对返回的数据进行一定的处理,也就是序列化对象为Json时使用。反序列化,就是当接收的参数想做一定处理,获取到处理后的数据时候。2,JsonSerializer序列化1,自定......
  • 如何度量关键成果KR的完成情况?
    明确度量指标首先,需要为每一个关键成果(KeyResult)设定明确的度量指标。这些指标应该是具体、可衡量的,以便能够清晰地反映关键成果的完成情况。例如,如果关键成果是提高网站的用户转化率,那么度量指标可以是具体的转化率数值。设定目标值为每个度量指标设定一个具体的目标值。这个......
  • mysql 5.7安装mariadb审计插件
    官方文档:https://mariadb.com/kb/en/mariadb-audit-plugin/参考文档:https://segmentfault.com/a/1190000042056617下载10.5版本的mariadb,再高的版本不适合5.7 1、下载mariadb下载界面:https://dlm.mariadb.com/browse/mariadb_server/101/1956/bintar-linux-x86_64/root......
  • mybatis
    mybatis特殊查询#占位符,&拼接模糊查询,动态删除$模糊查询,会被解析成字符串1.不适用#使用$第二种方案,mysql字符串拼接likeconcat("%",#{username},"%")第三种方式like"%"#{usernam}"%"intdeleteMore批量删除只能用$符号动态设置表名/*查询指定表的数据只能用$动态设置表名添加......
  • git 撤销
    Git管理的文件分为:工作区,版本库,版本库又分为暂存区stage和暂存区分支master(仓库)工作区>>>>暂存区>>>>仓库gitadd把文件从工作区>>>>暂存区,gitcommit把文件从暂存区>>>>仓库,gitdiff查看工作区和暂存区差异,gitdiff--cached查看暂存区和仓库差异,gitdiffHEAD查看工作......