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

這樣作的好處是,遠程主幹上的歷史永遠是線性的。每一個人在本地分支解決衝突,不會在主幹上產生衝突。