git rebase 學習

大致記錄一下

  1. 一般 不管是 rebase 還是 merge 都需要先 把 master 本地的和遠端同步一下,如果你沒有操作篡改 master代碼,只需要git checkout master 並做git pull 然後再checkout 你的分支上
  2. Rebase 一般在你的現有分支上操作,比如 muller_dev,不要在master 上操作
  3. git rebase 分支 是爲了向 master 提 merge request 做準備
  4. git rebase 分支是爲了方便merge request 的審覈人 更清晰查看從上一次merge request到這一次merge request的代碼更改全量,兩次merge request 間隔 肯定會有多次commit ,如果不rebase 的話,審覈人只能看到最近一次commit的更改 ,而無法查看全部更改
  5. git rebase -i HEAD~N N 的數字必須是明確的,不可以多,否則會出問題
  6. git rebase -I HEAD~n 把之前的多次commit 合併成一次 commit ,是會有一次新的commit在本地,需要 在 force push 更新到遠端 git push -f origin muller_dev ,force push儘量不要出現在master上
  7. git rebase 作爲一次新的commit 你可以書寫新的 commit message ,在你 操作完 pick 修改爲s 後 出現的交互shell中 ,git rebase 其實主要是把之前的commit 從pick 狀態修改爲squash ,squash 本意是壓扁 拉平,相當於 flatten,等於把要 squash的commit,算作沒有被修改 還是pick 狀態的commit了
  8. 通過git log 查看到底你需要squash 多少個commit
  9. 如果你 rebase 不小心 污染了這個分支的代碼 但是還沒有push,可以使用 git rebase --abort 丟棄上次的rebase,當然 如果你是 git merge master 污染了 這個分支,使用git merge --abort 或者 刪除本地這個分支 git branch -D muller_dev,然後再從遠端拉取這個分支下來 git fetch origin muller_dev
  10. 在你 git rebase -i HEAD~N 你的本地分支時 ,一般需要先 git rebase master ,把已經和遠端同步過的本地master 衍合到這個當前本地分支,這樣 操作 是爲了master更乾淨整潔 ,如果合併master有衝突,那這個衝突就在你的這個本地分支解決就可以了,然後再更新到遠端的這個分支作爲merge request 的源,防止master在解決衝突後導致另外的分支出現更多的衝突,保證master 只有code reviewer 有權限merge ,無人篡改,切記 一定要把本地的master 先與遠端的master 同步更新了!!!
  11. 所以一般在 做 merge request 時你的必要操作流程,大概是這樣的
        git checkout mastergit pullgit checkout muller_dev
         git rebase master
         git  log /status
       git rebase -i HEAD~n  —>pick—>s[squash]
       git push -f  origin muller_dev
       #  Create merger reqeust from muller_Dev to master
    #   code reviewer  check 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章