git教程-git rebase 合并多条commit记录变为一条 作者:马育民 • 2023-06-25 07:19 • 阅读:10424 # 应用场景 ### 场景1 完成需求时,可能会 **多次提交代码**,每次提交都有一个记录,如下: [](/upload/0/0/1IX5kJI8mfd1.jpg) 当提交到远程仓库时,只想保留一个或几个commit,这时候就需要合并commit了。 ### 场景2 要进行 **分支合并** 的时候(从一个分支合并到另一个分支),只想保留一个或某几个commit,这时候就需要合并commit了。 ### 场景3 与企业管理方式有关,有的公司,一个需求只允许提交一次到远程仓库 # 操作 ## 前提 提交到本地库,没有提交到远程库 ## 方式一 ### 第一步 要把前七个commit合并成一个,即: [](/upload/0/0/1IX5kKsG4PW4.jpg) ``` git rebase -i HEAD~7 ``` **解释:**`HEAD~7` 表示前7个commit合并成一个 ### 第二步:摘取合并 然后列出合并的所有commit **注意:**列出的顺序是从老到新的 [](/upload/0/0/1IX5kLZXg6LL.jpg) **解释:** - Pick:会在你的历史记录中保留该提交。 - Reword:允许你修改提交信息,可能是修复一个错别字或添加其它注释。 - Edit:允许你在重放分支的过程中对提交进行修改。 - Squash:可以将多个提交合并为一个。 更改 `pick`,把这七个合并成一个commit,那么更改如下: [](/upload/0/0/1IX5kLbMt7TS.jpg) **注意:**第一个是 `pick`,不要修改 执行 `esc` -> `wq` 保存退出 然后,让我们更改commit信息,编辑完后退出就好了。 最后完成的效果如下: [](/upload/0/0/1IX5kMNk45Vb.png) ## 方式二 只有第一步与上面方式不同,其余完全相同 ### 第一步 要把前七个commit合并成一个,即: [](/upload/0/0/1IX5kKsG4PW4.jpg) ``` git rebase -i 6394dc ``` **解释:**`6394dc` 是第7个版本号的前一个 感谢: https://zhuanlan.zhihu.com/p/139321091 https://linux.cn/article-12231-1.html 原文出处:http://malaoshi.top/show_1IX5kMcTE0r2.html