branch介紹:
*master是主支 (預設branch停在這條)
develop是master的分支,所以檔案與master一模一樣
測試檔案:
test.php
test2.php
第一種情況:master都沒修改過
- git checkout develop 切到develop
- 修改test、test2及新增test3 做些修改
- git add . 新增進stage
- git commit -m "develop commit" commit
- git checkout master 切到master
- git merge develop 合併develop
- 這時候master的資料就和develop一模一樣了 ^^
- git branch -d develop 刪除develop
- git checkout -b develop 新增剛合併完的master分支,所以這條develop是最新的資料,並且將線切換過去了,因為(checkout語法)
- 接下來可以繼續以develop 開發,重覆著2~9的動作
第二種情況:master被修改過(合併就會出現conflict)
檔案一樣先回到最上面的假設
- 修改test test2 新增了test3 test4 (目前是在master)
- git add . 新增進stage
- git commit -m "master commit" commit
- git checkout develop 切到develop
- 修改了test test2 新增了test3 不增加test4
- git add . 新增進stage
- git commit -m "develop commit" commit
- git checkout master 切到master準備合併
- git merge develop 因為master與develop檔案不同(不同的狀況與情況一不一樣)所以會產生conflict
- 因為master有develop沒有的test4,所以test4沒有conflict,但其餘三個有,各別開檔案進去裡面修改
- git add . 將修改完的檔案add進stage
- git commit -m "merge done" commit
- git branch -d develop 刪除develop,目的是建一個最新版的develop
- git checkout -b develop 新增develop並且將線切到develop(其實這一行等於git branch develop + git checkout develop)
- 繼續開發你的develop
情況二的9. (conflict)
注意 : 如果只有自己一個人開發的話,建議主線就是master,並且每當合併完後,新增一條develop繼續開發(master那邊不要動),否則master那邊做一點,又跑到develop那做一點,合併時會產生情況2的conflict問題,處理起來也挺麻煩的。每當功能完成後要合併時,合併完後,一樣master不要理它,開一條develop繼續做,一直重覆這個循環開發就對了^^
沒有留言:
張貼留言