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 @ 2022-07-15 14:37  秋来叶黄  阅读(2929)  评论(0编辑  收藏  举报