2012年12月10日 星期一

[git][merge]實際操作,合併流程,包含處理conflict

branch介紹:
*master是主支  (預設branch停在這條)
develop是master的分支,所以檔案與master一模一樣
測試檔案:
test.php
test2.php

先分為兩種情況

第一種情況:master都沒修改過
  1. git checkout develop                               切到develop
  2. 修改test、test2及新增test3                   做些修改
  3. git add .                                                   新增進stage
  4. git commit -m "develop commit"               commit
  5. git checkout master                                  切到master
  6. git merge develop                                     合併develop
  7. 這時候master的資料就和develop一模一樣了 ^^
  8. git branch -d develop                               刪除develop
  9. git checkout -b develop                            新增剛合併完的master分支,所以這條develop是最新的資料,並且將線切換過去了,因為(checkout語法)
  10. 接下來可以繼續以develop 開發,重覆著2~9的動作
第二種情況:master被修改過(合併就會出現conflict)
   檔案一樣先回到最上面的假設
  1. 修改test test2 新增了test3 test4            (目前是在master)
  2. git add .                                                  新增進stage      
  3. git commit -m "master commit"                commit      
  4. git checkout develop                               切到develop
  5. 修改了test test2 新增了test3                不增加test4
  6. git add .                                                  新增進stage  
  7. git commit -m "develop commit"              commit      
  8. git checkout master                                  切到master準備合併
  9. git merge develop                                    因為master與develop檔案不同(不同的狀況與情況一不一樣)所以會產生conflict
  10. 因為master有develop沒有的test4,所以test4沒有conflict,但其餘三個有,各別開檔案進去裡面修改
  11. git add .                                                  將修改完的檔案add進stage
  12. git commit -m "merge done"                     commit
  13. git branch -d develop                               刪除develop,目的是建一個最新版的develop
  14. git checkout -b develop                            新增develop並且將線切到develop(其實這一行等於git branch develop + git checkout develop)
  15. 繼續開發你的develop
情況二的9. (conflict)



注意 : 如果只有自己一個人開發的話,建議主線就是master,並且每當合併完後,新增一條develop繼續開發(master那邊不要動),否則master那邊做一點,又跑到develop那做一點,合併時會產生情況2的conflict問題,處理起來也挺麻煩的。每當功能完成後要合併時,合併完後,一樣master不要理它,開一條develop繼續做,一直重覆這個循環開發就對了^^

沒有留言:

張貼留言