1. 當前分支落後拉取後,整理commit,使得提交歷史爲直線html
git pull = git fetch + git mergegit
git pull --rebase = git fetch + git rebaseide
其實--rebase的目的只有兩個:fetch
1.讓多我的在同一個分支開發的提交節點造成一條線,而不是多條線spa
2.讓你提交的commit在該分支的最前面.net
當push被reject的時候,能夠用 git pull --rebase 拉取內容,將提交記錄保持一條直線code
git pull --rebase時候,不能有modified狀態的文件,能夠有Untracked files。modified狀態的文件,能夠commit或者stash一下,一般的操做有:htm
$ git stash $ git pull --rebase $ git push $ git stash pop
2. 別的分支合併到master,先整理爲直線,再合併blog
1. 開闢特性分支 git checkbox -b feature
2. 在feature分支提交commit
3. 在feature git reabse -i 合併多個commit爲一個,簡化提交歷史。這樣能夠在git rebase時候減小衝突解決次數。
4. 在feature git pull origin master --rebase (至關於git fetch origin master, git rebase origin/master)
將master最新commit同步到此分支,可能要手動解決衝突(合併過程當中,異常退出vi窗口,
用git rebase --edit-todo恢復,修改完,git rebase --continue 繼續下一步,
忽略,git rebase --skip,終止,用git rebase —abort)
5. 切回master,git merge feature 將feature分支內容合併到master
6. git push提交master排序
如此,master的提交歷史將是一條直線。
3. 分支的多個連續commit複製到其餘分支
git rebase [startpoint] [endpoint] --onto [branchName] //將多個連續commit添加到目標分支branchName, [startpoint] [endpoint]指定的是一個 前開後閉的區間
例如:
git rebase 90bc0045b^ 5de0da9f2 --onto master //90bc0045b^後退一個commit,作成一個[90bc0045b, 5de0da9f2]閉區間
rebase完後,須要
git reset --hard commitId //將分支的HEAD指向提交的id
4. commit合併
git rebase -i [startpoint] [endpoint] //[endpoint]可省略,將多個commit合併爲一個,使用squash模式
例如:
git rebase -i HEAD~3 //往前3個commit,到如今,進行合併
5. commit拆分
git rebase -i 對指定commit的pick改成edit,進行編輯拆分
6. commit排序
git rebase -i 修改列表中commit順序便可
7. 改變分支起點
git checkout feature2
git rebase master
能夠將feature2起點從別的分支改到master分支上
注意點:
主分支上不能rebase,若是如此,主分支的歷史將被篡改,不能看到原始的歷史記錄了
git pull時能夠加上--rebase參數, 使之不產生Merge點, 保證了代碼的整潔,每次加rebase參數有點麻煩,
給指定分支設置爲rebase方式,可使用以下方式:
$ git config branch.dev.rebase true
使用時將 "dev" 修改爲您本身本地的分支名字,必須cd到工程目錄下,才能更改分支配置
全部的分支都應該用rebase
$ git config --global branch.autosetuprebase always
這樣新建的分支會設置爲rebase,已經建好的還需單獨設置
參考:
https://baijiahao.baidu.com/s?id=1633418495146592435&wfr=spider&for=pchttps://www.liaoxuefeng.com/wiki/896043488029600/1216289527823648https://blog.csdn.net/nrsc272420199/article/details/85555911https://www.codercto.com/a/45325.html