[TOC] #### 1. git rebase 介紹 ---- git rebase 最大的作用是可以重寫歷史(重寫提交記錄) 合理使用 rebase 命令可以使我們的提交歷史干凈、簡潔 ! rebase 在 git 中是一個非常有魅力的命令,使用得當會極大提高自己的工作效率;如果亂用,會給團隊其他人帶來麻煩 #### 2. 將多個 commit 合并為一個 commit --- 相信絕對大多數(shù)公司都會有這個要求: 每天下班前必須將當天的代碼推送到遠程庫,但是今天在本地做了多次提交記錄,你想要將今天的多次提交記錄合并為一個提及記錄,然后再推送到遠程庫。此時,使用 git rebase 命令可以實現(xiàn)你的目的 有這樣一個倉庫,當前有 5 個提交記錄,我想要將最后三次的提交記錄合并為一個提交記錄  使用下面命令進行提交記錄的合并,`-i, --interactive` 參數(shù)的作用是以交互式的界面讓用戶編輯完成合并的操作 ``` git rebase -i HEAD~3 ``` 也可以使用 ``` git rebase -i 2402738 ``` 執(zhí)行命令后進入以下界面,修改完成后使用 `:wq` 保存退出  指令編輯區(qū)域: 本次 rebase 操作包含的所有提交,每一個 commit id 前面的 pick 表示指令類型 指令說明區(qū)域: 指令類型說明,rebase 的指令類型有以下幾種 | 指令 | 縮寫 | 描述 | | ------------ | ------------ | ------------ | | pick | p | 保留該 commit | | reword | r | 保留該 commit,修改該 commit 的注釋 | | edit | e | 保留該 commit,修改該 commit,不僅僅是注釋 | | squash | s | 將該 commit 和前一個 commit 合并 | | fixup | f | 將該 commit 和前一個 commit 合并,但不保留該提交的注釋 | | exec | x | 執(zhí)行 shell 命令 | | drop | d | 丟棄該 commit | rebase 指令類型編輯界面修改完成后進入注釋修改界面,修改完成后使用 `:wq` 保存退出  合并成功后的提示  將合并成功后結果推送至遠程庫時會報錯,必須使用 -f 參數(shù)進行強制推送才行  剛才我們是將遠程庫中的多個 commit 合并為一個 commit,下面來測試將本地的多個 commit 合并為一個 commit  合并最新的 4 個提交記錄 ``` git rebase -i HEAD~4 ``` 話不說多,直接上操作流程圖    總結: 合并遠程庫中的多個 commit 推送時需要強制推送,合并多個未推送到遠程庫的多個本地 commit,不需要強制推送。平時開發(fā)中,合并本地的多個 commit 還比較實用,已推送到遠程庫中的 commit 不建議輕易的去修改它