使用Git rebase合并多条提交记录commit。以及使用 git commit amend本地提交直接合并到远程已有commit的用法

需求场景一 :
对某个小的功能点进行多次反复的修改提交,且已经提交到远程,导致commit记录过多,太过于杂乱无章,想要精简合并一些提交记录。

场景还原:
比如下图4个git commit记录,log1-log4,需要将他们合并成一个提交记录

在这里插入图片描述
解决方案:

  1. 要处理的是log1-log4 这四条commit记录。
  2. 选中log1之前一条commit的commit id,也就是图中最下面这条。e65b97e332c0683631c334b870e0ceb062163815
  3. 使用 git rebase 进入vim编辑器
 git rebase -i e65b97e332c0683631c334b870e0ceb062163815

在这里插入图片描述

4.进入vim编辑器之后,单击 i 按键 进入编辑模式,这是最下方会出现-- INSERT --标识表示我们进入了编辑模式。
在这里插入图片描述
5. Commands 可以看到我们可以使用的命令以及缩写以及每个命令的缩写。这次要使用的命令的是pick和squash。
6.这时候最上方4个commit log1-log4的前面都是pick,移动光标将log2-log4前面的pick改为s(或者squash)
在这里插入图片描述
7. 编辑完毕之后,点击esc 然后按住 shift+";“双引号, 最底下出现冒号, 然后输入wq 回车 保存。
8. 这时候就能看到 我们之前提交的4个 commit 的 信息, 你可以选择在不要的message前面加个#号 表示忽略掉这条信息,一般来说去掉几个不要的,只保留一个进行编辑或者保持原始状态。比如 我在log1 3 4 前面加个#号表示忽略,对log2进行编辑 。(这里依然要点击i 进入编辑模式。)
在这里插入图片描述
9.编辑完之后的效果如下,我想要提交的合并信息就是"meger log1-4”,
重复上面的步骤 保存退出。esc=>:wq

在这里插入图片描述
10.如果成功会有一行提示

Successfully rebased and updated refs/heads/feature/git-test.

如果失败 可以使用 git rebase --continue 进入vim编辑器重新操作。
如果想要放弃这次编辑 可以使用git rebase --abort 命令中止本次操作。
11. 最后使用命令 git push -f 强制推送,大功告成。在这里插入图片描述

需求场景二 :
对于已有一个提交记录push到远程, 但你本地目前有一点小的修改,想再推送到远程,但不想再生成一个提交记录,使得commit记录过多,且不想更改已有的commit message。
比如下图 有一个提交 my first commit commitId是7b3b6ada 时间是 16:47
在这里插入图片描述
解决方案 :
1.git add . 将要更改的代码提交。
2. 这时候 可以使用 git amend进行合并代码

git  commit --amend --no-edit

在这里插入图片描述
3.最后强推到远程

git push -f
  1. 查看效果 git log。我们可以发现 提交时间和message没变,但是 commitId 从7b3b6ada 变成了3ac2a2d。
    在这里插入图片描述
    5.⚠️注意 这个方法只适合只有一个开发者 或者自己单独一个开发分支的时候使用, 否则有可能会覆盖别人的代码,慎用 慎用。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值