例如,我在開發(fā) feature/user
用戶管理模塊,提供用戶的名稱,信息等等, 我的同事在開發(fā) feature/login
登錄系統(tǒng),他需要我的用戶模塊來檢測(cè)是否可以登錄,獲取用戶信息等等。
問題1:
假設(shè)我已經(jīng)完成了用戶系統(tǒng),那么怎么給我的同事讓他使用?
難道是我先 finish
, 同事再 finish
, 同事再 start
么?不太現(xiàn)實(shí)。
問題2:
假設(shè)我沒有完成用戶系統(tǒng),但是我完成了同事所需要的內(nèi)容,那怎么給他使用?
難道是我先 finish
, 同事再 finish
, 我和同事再 start
,分別繼續(xù)開發(fā)么?
這些有什么好的解決方案么?
補(bǔ)充:首先主要是時(shí)間太緊張了,一個(gè)人肯定寫不來,所以要多個(gè)人一起,可是多個(gè)人又會(huì)牽扯依賴問題。所以想知道如何解決這個(gè)問題。
小伙看你根骨奇佳,潛力無限,來學(xué)PHP伐。
由于你并未提及是否在同一個(gè)工程項(xiàng)目下進(jìn)行開發(fā); 這里我先假設(shè)你是同一個(gè)項(xiàng)目, 在闡述我的意思之前請(qǐng)你首先看一看下面這幾點(diǎn), 你是否都清楚:
git的節(jié)點(diǎn)之間是對(duì)等的
git支持ssh,http,file等協(xié)議
我的建議:
假設(shè)John和Jane兩人合作開發(fā)同一個(gè)項(xiàng)目;
John創(chuàng)建一個(gè)項(xiàng)目demo, 該項(xiàng)目在它的個(gè)人目錄下;
cd /home/John/demo/;
git init
git add .
git commit;
Jane如果和John在同一個(gè)開發(fā)機(jī), 那么她可以直接在自己的home下clone出John的代碼
git clone /home/John/demo/ #Jane應(yīng)該具有該目錄的權(quán)限
現(xiàn)在John可以繼續(xù)開發(fā), Jane也可以繼續(xù)開發(fā), 兩人都可以持續(xù)提交;
git commit #John
git commit #Jane
由于Jane直接clone的John的代碼,所以在Jane的目錄下git天然記錄了另外一個(gè)開發(fā)者的地址, 它的名字叫做remote,具體內(nèi)容在.git/config中, 配置字段名字叫做origin; Jane
可以直接拉取origin源的所有更新到自己的代碼;
git pull --rebase origin
問題來了,如果John也需要Jane的代碼呢? 由于John的git項(xiàng)目中還沒任何其他開發(fā)節(jié)點(diǎn)的信息, 他需要自己手工添加; 添加完之后他就可以隨時(shí)拉取Jane的更新;
git remote add jane /home/Jane/demo/
git pull --rebase jane
現(xiàn)在John和Jane就可以互相拉取對(duì)方的代碼到自己的文件夾中; 愉快地開發(fā)了;
我覺得這個(gè)需求在分工上就沖突了
一個(gè)模塊強(qiáng)依賴另一個(gè)模塊,必然要進(jìn)入等待
所以再細(xì)化你們的需求
User模塊完成后就可以提交
此時(shí)你分支你的模塊再繼續(xù)
你同事分支他的模塊再繼續(xù)
這是標(biāo)準(zhǔn)流程
有個(gè)概念叫持續(xù)集成,越早進(jìn)行集成操作對(duì)你們的代碼越有利
往下延伸的概念叫持續(xù)交付都是應(yīng)付這種環(huán)境的 可以參考
對(duì)于這種情況我建議這個(gè)方法:
從 feature/user
分支上開出一個(gè)新的分支 feature/user_login
當(dāng) feature/user
開發(fā)進(jìn)入到可用的階段時(shí), 把代碼往 feature/user_login
上合并
這樣 feature/user_login
可以直接進(jìn)行測(cè)試
當(dāng) feature/user_login
開發(fā)完畢后,合并到 feature/user
上
最后 finish
feature/user
這樣是將 feature/user_login
作為 feature/user
的一個(gè)子功能開發(fā)的
如果再做功能的時(shí)候不是這樣設(shè)計(jì)的, 那最好還是將 feature/user
finish
后再開發(fā) feature/login