git小技巧如何合并代码后清除掉commit记录

本文介绍如何在Git中使用merge--squash和手动补丁合并代码,避免显示多次提交记录,以维护清晰的dev_br2分支。两种方法适用于清理commit记录的场景。

背景

  • 我们在使用git做代码版本控制的时候,经常把其他分支的代码合并到当前开发的分支。不过有的时候只想把相关功能合并过来,不想把提交的每一次记录都合并到本分支。不知道有没有人有这种需求,本来我个人是不太理解为什么会有这样的需求,直到最近我遇到一个问题需要清理commit记录。而既然git提供了这样的能力相信,虽然小众但是还是应该有使用这个功能的场景。

解决办法

  • 举个例子:
    分支:dev_br 个人完成了某个功能,包括三次提交
    在这里插入图片描述截图中 commit 1 、commit2、commit3 代表这三次提交
  • 目标:把dev_br的三次提交开发的功能,合并到dev_br2中,但是不现实这三次提交的commit记录。
  • 我找到了两种方法来达到这个目标
方法一
  • 使用merge --squash 命令。此命令可以在合并的时候将所有提交记录合并成一个commit记录。 命令如下:
git merge --squash dev_br
  • 在这里插入图片描述
  • 这样dev_br的功能已经合并到dev_br2中了,但是提交记录只有我自己最近的一个提交 “new commit” 如下图所。
  • 在这里插入图片描述
方法二
  • 采用手动打补丁的方法合并代码
  • 首先从dev_br分支中导出变更代码,查找当前上一次提交的commitid进行比较。将比较的结果导出到文件中,比如下面示例中/tmp/diff.patch
git diff 7ef406a > /tmp/diff.patch 
  • 接下来在dev_br2分支中把补丁手动导入进去,相关命令
git apply --stat /tmp/diff.path #预览一下改动点
git apply --check /tmp/diff.path #校验一下文件
git apply /tmp/diff.path #应用此补丁
  • 结果如下:

在这里插入图片描述* 接下来就按照正常提交就可以了。

最后,希望以上两种方法会给大家工作中带来一些帮助

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp500

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值