git rebase之提交合并

如果我们提交了几次代码,实际上是同一个功能,或者说就是想把多次提交再合并成一次提交,减少提交日志的混乱,可以用git rebase -i xxx,xxx是你想合并的分支的前一个,也就是xxx分支是不参与这次合并。

注意事项

  1. 建议合并的分支中间没有其他提交,不然有可能有冲突,解决起来非常麻烦

  2. 建议合并分支不要太久远,也是有可能有冲突的问题

如下有一个仓库,三个提交

image

想要合并前两个提交,可以运行

git rebase -i 5c7f60209fbbf0cfd4138079f2dde824bb45f025

git rebase -i 是从当前分支开始,一直回退到指定分支,如下

image

其他的参数如果需要可以自己了解,这里只需要介绍squash,squash是把当前的提交与上一个提交合并,如果多个合并就全部换成s

把后面提交记录前面的pick改成squash或者缩写s,如下

image

保存退出后会直接弹出另一个编辑窗口,就是提交代码commit的时候的编写提交日志的窗口,如下

image

重新编写一下日志,保存退出,运行git log查看是否成功

image

如何合并不相邻的提交
不相邻的提交合并理论上也很简单,前提是两次提交最好不要相隔太久,中间最好不要有太多重复修改,同样还是为了避免冲突,因为冲突太多很容易导致代码丢失。
不相邻的提交合并需要两步:
第一步,通过git rebase -i xxx同样打开编辑文本,然后调整不相邻的提交日志到一起。也就是把其中的一条剪切然后复制到另一个上一行或者下一行,让其相邻。具体是剪切哪一条提交日志,复制到哪个位置,需要根据提交的内容自己确定,一个原则就是减少冲突。最常见的是把最新的提交,剪切,复制到需要合并的提交的后面,保证它们是一个正常顺序。比如a, b, c, d,a是最早的提交,d是最新的提交,如果合并a和d,那么先把顺序调整为a, d, b, c,不要修改提交日志前面的参数,保存退出
第二步,就和上面一样了,再运行git rebase -i xxx,把d的参数改为s或者f(f的意思就是不使用对应的提交的日志,保存退出直接完成,不会再次打开日志编辑页面),保存退出即可

posted @   秋来叶黄  阅读(2973)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
历史上的今天:
2019-07-15 c++开发遇到的错误和引用配置
点击右上角即可分享
微信分享提示