背景
git支援很多種工作流程,我們采用的一般是這樣,遠端建立一個主分支,本地每人建立功能分支,日常工作流程如下:
去自己的工作分支
$ git checkout work
工作
....
送出工作分支的修改
$ git commit -a
回到主分支
$ git checkout master
擷取遠端最新的修改,此時不會産生沖突
$ git pull
回到工作分支
$ git checkout work
用rebase合并主幹的修改,如果有沖突在此時解決
$ git rebase master
$ git checkout master
合并工作分支的修改,此時不會産生沖突。
$ git merge work
送出到遠端主幹
$ git push
這樣做的好處是,遠端主幹上的曆史永遠是線性的。每個人在本地分支解決沖突,不會在主幹上産生沖突
變基過程中常用的幾個指令
例如我們需要将iss33變基到master分支上,使用指令
git checkout iss33;git rebase master
,此時會進入rebase模式,如果iss33和master分支中的送出有沖突,需要手動合并檔案解決,解決沖突後使用
git add
表示沖突已經解決,
git rebase --continue
表示繼續下一個沖突,
git rebase --skip
表示跳過目前沖突,
git rebase --abort
表示退出rebase模式,回到運作
git rebase master
指令之前的狀态。