Git通过rebase合并多个commit

在使用 Git 作为版本控制的时候,我们可能会由于各种各样的原因提交了许多临时的 commit,而这些 commit 拼接起来才是完整的任务。那么我们为了避免太多的 commit 而造成版本控制的混乱,通常我们推荐将这些 commit 合并成一个。

1. 查看提交历史 git log

首先你要知道自己想合并的是哪几个提交,可以使用 git log 命令来查看提交历史,假如最近 4 条历史如下:

go 复制代码
commit 3ca6ec340edc66df13423f36f52919dfa3......

commit 1b4056686d1b494a5c86757f9eaed844......

commit 53f244ac8730d33b353bee3b24210b07......

commit 3a4226b4a0b6fa68783b07f1cee7b688.......

历史记录是按照时间排序的,时间近的排在前面。

2. git rebase

想要合并 1-3 条,有两个方法

从HEAD版本开始往过去数3个版本

go 复制代码
git rebase -i HEAD~3

指名要合并的版本之前的版本号

go 复制代码
git rebase -i 3a4226b

请注意 3a4226b 这个版本是不参与合并的,可以把它当做一个坐标

3. 选取要合并的提交

执行了 rebase 命令之后,会弹出一个窗口,头几行如下:

go 复制代码
pick 3ca6ec3   '注释**********'

pick 1b40566   '注释*********'

pick 53f244a   '注释**********'

将 pick 改为 squash 或者 s,之后保存并关闭文本编辑窗口即可。改完之后文本内容如下:

go 复制代码
pick 3ca6ec3   '注释**********'

s 1b40566   '注释*********'

s 53f244a   '注释**********'

然后保存退出,Git 会压缩提交历史,如果有冲突,需要修改,修改的时候要注意,保留最新的历史,不然我们的修改就丢弃了。修改以后要记得敲下面的命令:

go 复制代码
git add .  

git rebase --continue  

如果你想放弃这次压缩的话,执行以下命令:

go 复制代码
git rebase --abort  

如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:

go 复制代码
# This is a combination of 4 commits.  
#The first commit's message is:  
注释......
# The 2nd commit's message is:  
注释......
# The 3rd commit's message is:  
注释......
# Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit.

输入 wq 保存并推出, 再次输入 git log 查看 commit 历史信息,你会发现这两个 commit 已经合并了。

通过IDEA或者GOLAND便捷式操作 https://blog.csdn.net/huangjhai/article/details/109557946

相关推荐
研究是为了理解27 分钟前
Git Bash 常用命令
git·elasticsearch·bash
DKPT1 小时前
Git 的基本概念和使用方式
git
Winston Wood4 小时前
一文了解git TAG
git·版本控制
喵喵先森5 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu5436 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio8 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。9 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie610 小时前
在IDEA中使用Git
java·git
晓理紫19 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿21 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git