Git合并多次提交

本文介绍了如何使用gitlog查看提交历史,并通过gitrebase进行提交合并。详细步骤包括选择要合并的提交、使用squash操作压缩历史,以及解决合并冲突。最后,将更新推送到远程仓库,并强调了在合并过程中需要注意的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查看提交历史,git log

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

commit 3ca6ec340edc66df13423f36f52919dfa3......

commit 1b4056686d1b494a5c86757f9eaed844......

commit 53f244ac8730d33b353bee3b24210b07......

commit 3a4226b4a0b6fa68783b07f1cee7b688.......

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

二、git rebase

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

2.1、从HEAD版本开始往过去数3个版本
git rebase -i HEAD~3
2.2、指名要合并的版本之前的版本号
git rebase -i 3a4226b

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

三、选取要合并的提交

3.1 、执行了rebase命令之后,会弹出一个窗口,头几行如下:
pick 3ca6ec3   '注释**********'

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

pick 53f244a   '注释**********'
3.2、将pick改为squash或者s,之后保存并关闭文本编辑窗口即可。改完之后文本内容如下:
pick 3ca6ec3   '注释**********'

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

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

git rebase --continue  

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

git rebase --abort  
3.4、如果没有冲突,或者冲突已经解决,则会出现如下的编辑窗口:
# 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.
3.5、输入wq保存并推出, 再次输入git log查看 commit 历史信息,你会发现这两个 commit 已经合并了。

四、同步到远程 git 仓库

git push origin xxx -f or git push origin xxx --force

查看远程仓库效果,多次 commit 已被合并成一次 commit。

五、参考链接

https://segmentfault.com/a/1190000007748862

https://blog.csdn.net/u012308586/article/details/104923400

### 在 IntelliJ IDEA 中将多个 Git 提交合并为一个 在处理多个提交时,可以利用 `git rebase` 和交互式变基功能来实现这一目标。通过这种方式能够有效地整理历史记录,使得分支树更加整洁[^1]。 对于希望在 IntelliJ IDEA 中完成此操作的情况: #### 开始交互式 Rebase 过程 首先,在IDEA中打开终端或者使用VCS菜单下的Git子项找到Rebase命令启动交互式的rebase流程。也可以直接按下快捷键组合Alt+9进入版本控制系统工具窗口,接着选择“Log”标签页查看提交日志,并右击想要开始变基的目标提交(通常是较早的一个),从上下文菜单里选取“Rebase interactively...”。 此时会弹出一个新的编辑器选项卡展示一系列待处理的提交条目列表,默认情况下它们都被标记为pick动作。 ```bash pick abcdefg Commit message of commit A pick 1234567 Another commit message B ... ``` #### 修改提交行为 为了把几个连续的提交压缩成单个提交,需更改除了最顶部之外其他所有相关联提交前缀单词由“pick”变为“squash”。这表示这些提交将会被折叠到上面那个保留下来的提交之中去。 ```bash pick abcdefg This is the new combined commit message. squash 1234567 The changes from this will be merged into above. ... ``` 保存文件并关闭它之后,IDEA 将自动执行相应的操作,包括可能提示解决任何可能出现的冲突。一旦解决了所有的冲突并且完成了整个过程,则最终结果就是只有一个包含了之前多份改动的新提交存在了[^2]。 需要注意的是,当涉及到多人协作开发环境中的公共分支上做此类变更时要格外小心谨慎,因为强行推送到远端可能会给团队成员带来不便甚至数据丢失的风险。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值