Git的優點相信已不用我贅述,不是SVN之流能夠相提並論的。
以前多人開發的時候我還用過拖檔案大發和別人合作的。- -!
我在這裡不多說一些基本命令,只教最實用的,多人開發到底怎麼用Git。
場景
三人合作開發一個app,老大叫小明,老二叫小強,老三叫小偉。
這時候老大去github開一個repository, 當然,公司專案一般是private repo。
建立好之後呢。老大在這個repo分別開四個分支。
名字叫
xiaoming_gittutorial
,xiaoqiang_gittutorial
,xiaowei_gittutorial
,還有一個develop
分支。
現在是這樣的。
ok,現在老大告訴其他兩個人,把專案從github上clone下來。
ok,拉下來之後呢,輸入git branch
,看看本地分支有哪些。
本地只有一個master,分支。現在,讓每個人分別從遠端分支拉兩個分支。一個是develop
,一個是代表自己的那個分支,例如小明,就拉xiaoming_gittutorial
.
輸入git fetch origin develop:develop
這個命令的意思就是拉取遠端的一個叫develop的分支,並在本地建立一個叫develop的分支和遠端的分支匹配。
全部拉完之後我們再看看本地有哪些分支了。
我們做完了前期準備工作,接下來怎麼保證多人協作的時候儘量少出現merge conflict和汙染主分支
做到以下幾點,其實就不容易出現大的紕漏。
- 做好分工,特別是storyboard和xib多種,儘量避免出現多人修改同一個檔案。
- 每個人的所有開發工作都只在自己的分支開發。例如小明開發,你就在本地切換到自己的
xiaoming_gittutorial
分支然後進行開發。 - 每個人只允許在自己的分支直接push遠端分支。
- 合併的時候必須遵循以下條件.
- 十分重要
- 首先,本地切換到
develop
分支。 git pull
- 例如你是小明,那麼在pull到遠端的develop最新的內容之後,
git merge xiaoming_gittutorial
. - 如果出現conflict那麼清除conflict之後,commit.然後把本地develop push 到遠端的develop.
- 每完成一個功能就提交一次。不要累計程式碼。
- 首先,本地切換到
- 十分重要
這樣的流程有什麼好處呢?
- 幾乎不會出現conflict。
- 你永遠也不會汙染develop分支。
- 為什麼?因為你每次都是在本地merge完清除了conflict之後再push會遠端,那麼別人更新本地develop分支,再合併的時候,就算出現conflict也只會是自己最新程式碼產生的conflict。
最後我們再理清一下思路。
1.正式開發的時候每個人本地只需要有兩個分支。一個叫develop,一個是自己的那個分支。
2.每個人可以直接push自己的分支。但是push develop分支的時候。必須先pull 最新的遠端develop分支。然後和本地分支合併,清除conflict之後再push。
大家可以實踐一下。有任何問題請留言。