--- tags: Git, disqus: hackmd --- # Git rebase master 動作: 1. 首先切到master,做git pull -p 把master更新到最新。 2. 複製master的代號(?) 3. 在自己的分支底下,打git rebase d75b5f3a040ed00046ed26db3589c0d912cc1847 4. 使用git push -f的方式推上覆蓋 5. 有衝突要解衝突 最後就會看到你的分支在master前面。 其用意就是在多人協作情況下,大家都從master開分支,到你做完要合併回master時,這中間可能已經有其他人比你早先合併回master。 也就是說此時你的分支上沒有最新的master紀錄,如果就這樣推上master,有可能會覆蓋掉他人的心血結晶,而rebase master的動作就是把自己的點提升到最前面,保證你是最新的紀錄,也保證你本地端有了他人的心血結晶,這樣推上master就不會有問題。 --- ## 第一動到第三動的解說 因為我在分支上做開發,這時候master上可能已經有很多紀錄了,所以我先切換到master把本地master更新到最新的狀態(否則本地master還是在你切出去之前的紀錄) 接著複製master的最新的commit代號,然後回到自己的分支去做rebase 這樣的目的在於git a分支 rebase b分支後,從線上來看a就會在b之前 ```javascript= // rebase合併圖 // 原本 a b | | master // 合併後 a | b | master ``` 所以我們用自己的分支去rebase master分之後就會變成,我們在master(最新紀錄)之上 順利沒衝突的話,就代表你的本地分支紀錄是最新的了 --- [另一種合併方式(使用 rebase)](https://gitbook.tw/chapters/branch/merge-with-rebase.html) [git push命令](https://www.yiibai.com/git/git_push.html) [送 PR 前,使用 Git rebase 來整理你的 commit 吧!](https://medium.com/starbugs/use-git-interactive-rebase-to-organize-commits-85e692b46dd)