[TOC] #### 1. git rebase 介绍 ---- git rebase 最大的作用是可以重写历史(重写提交记录) 合理使用 rebase 命令可以使我们的提交历史干净、简洁 ! rebase 在 git 中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;如果乱用,会给团队其他人带来麻烦 #### 2. 将多个 commit 合并为一个 commit --- 相信绝对大多数公司都会有这个要求: 每天下班前必须将当天的代码推送到远程库,但是今天在本地做了多次提交记录,你想要将今天的多次提交记录合并为一个提及记录,然后再推送到远程库。此时,使用 git rebase 命令可以实现你的目的 有这样一个仓库,当前有 5 个提交记录,我想要将最后三次的提交记录合并为一个提交记录  使用下面命令进行提交记录的合并,`-i, --interactive` 参数的作用是以交互式的界面让用户编辑完成合并的操作 ``` git rebase -i HEAD~3 ``` 也可以使用 ``` git rebase -i 2402738 ``` 执行命令后进入以下界面,修改完成后使用 `:wq` 保存退出  指令编辑区域: 本次 rebase 操作包含的所有提交,每一个 commit id 前面的 pick 表示指令类型 指令说明区域: 指令类型说明,rebase 的指令类型有以下几种 | 指令 | 缩写 | 描述 | | ------------ | ------------ | ------------ | | pick | p | 保留该 commit | | reword | r | 保留该 commit,修改该 commit 的注释 | | edit | e | 保留该 commit,修改该 commit,不仅仅是注释 | | squash | s | 将该 commit 和前一个 commit 合并 | | fixup | f | 将该 commit 和前一个 commit 合并,但不保留该提交的注释 | | exec | x | 执行 shell 命令 | | drop | d | 丢弃该 commit | rebase 指令类型编辑界面修改完成后进入注释修改界面,修改完成后使用 `:wq` 保存退出  合并成功后的提示  将合并成功后结果推送至远程库时会报错,必须使用 -f 参数进行强制推送才行  刚才我们是将远程库中的多个 commit 合并为一个 commit,下面来测试将本地的多个 commit 合并为一个 commit  合并最新的 4 个提交记录 ``` git rebase -i HEAD~4 ``` 话不说多,直接上操作流程图    总结: 合并远程库中的多个 commit 推送时需要强制推送,合并多个未推送到远程库的多个本地 commit,不需要强制推送。平时开发中,合并本地的多个 commit 还比较实用,已推送到远程库中的 commit 不建议轻易的去修改它