# git rebase 指令
## 參考資料
* [git rebase官方API](https://git-scm.com/docs/git-rebase)
## 實踐總結:
* git merge 跟 git rebase 經常一起討論,但它們不是相互替換的關系;;
* git rebase 是git merge的輔助,用了git rebase還得用git merge完成分支合并;
* 使用`git rebase`后,用法上比`git merge`復雜, 例如將`experiment`分支代碼合并到`master`:

* `git merge` 是切換到`master`分支然后合并:`git checkout master` + `git merge experiment`:

* `git rebase` 是切換到`experiment`然后變基到`master`分支,完成后, 切換回`master`再將兩分支合并: `git checkout experiment` + `git rebase master` + `git checkout master` + `git merge experiment`:


* `git rebase xxx`,沖突不多,使用`git rebase --continue`, 沖突太多`git rebase --abort` 取消變基。
## git rebase 常用指令:
* git rebase master
* 將當前分支 與 **本地** 叫`master`分支的代碼合并, 當前分支與`master`處在同一線上,當前分支的改動將在`master`分支的下一節點上;
* git rebase --abort
* 如果當前分支 跟 待合并的分支有沖突, 可以使用該指令取消`git rebase branchName`指令;(不想取消且你有足夠耐心:可使用`git rebase --continue`和`git rebase --skip`手動一步一步完成代碼合并,當然沒`git merge branchName`來的有效率)
* git rebase master newBranch
* 將`newBranch`分支代碼變基到`master`分支;相當于`git checkout newBranch` + `git rebase master`;
* git rebase -i
* 編輯本地未`push`的`commit`(本人多用于合并commit), 注意: 該指令需要 當前分支有 關聯的 遠程分支;
* 將要合并的commit前面“pick”改成(vim模式輸入“i”進入編輯狀態)“s”就能將它合并到前一個`commit`去, 然后保存退出(esc退出編輯狀態,然后”:"輸入“wq”保存退出)。
* 退出后進入下一個編輯窗口, 主要修改合并后新的注釋, 同理 輸入“i”進入編輯狀態, 修改完esc退出編輯狀態,然后”:"輸入“wq”保存退出;
## 相關指令:
* [git_merge.md](https://github.com/wteam-xq/testGit/blob/master/learn_log/git_merge.md) 合并其他分支代碼: 我使用的頻率更高一些哦!