例如,我正在開發feature/user
使用者管理模組,提供使用者的名稱,資訊等等, 我的同事正在開發feature/login
登入系統,他需要我的使用者模組來偵測是否可以登入,取得用戶資訊等等。
問題1:
假設我已經完成了使用者係統,那麼怎麼給我的同事讓他使用?
是我先 finish
, 同事再 finish
, 同事再 start
麼?不太現實。
問題2:
假設我沒有完成使用者係統,但是我完成了同事所需的內容,那怎麼給他使用?
是我先 finish
, 同事再 finish
, 我和同事再 start
,分別繼續開發麼?
這些有什麼好的解決方案?
補充:首先主要是時間太緊張了,一個人肯定寫不來,所以要多個人一起,可是多個人又會牽扯依賴問題。所以想知道如何解決這個問題。
巴扎黑2017-05-02 09:30:14
由於你並未提及是否在同一個工程項目下進行開發; 這裡我先假設你是同一個項目, 在闡述我的意思之前請你首先看一看下面這幾點, 你是否都清楚:
git的節點之間是對等的
git支援ssh,http,file等協定
我的建議:
假設John和Jane兩人合作開發同一個專案;
John創建一個專案demo, 該專案在它的個人目錄下;
cd /home/John/demo/;
git init
git add .
git commit;
Jane如果和John在同一個開發機, 那麼她可以直接在自己的home下clone出John的代碼
git clone /home/John/demo/ #Jane应该具有该目录的权限
現在John可以繼續開發, Jane也可以繼續開發, 兩人都可以持續提交;
git commit #John
git commit #Jane
由於Jane直接clone的John的代碼,所以在Jane的目錄下git天然記錄了另外一個開發者的地址, 它的名字叫做remote,具體內容在.git/config中, 配置字段名字叫做origin; Jane
可以直接拉取origin來源的所有更新到自己的程式碼;
git pull --rebase origin
問題來了,如果John也需要Jane的代碼呢? 由於John的git項目中還沒任何其他開發節點的信息, 他需要自己手工添加; 添加完之後他就可以隨時拉取Jane的更新;
git remote add jane /home/Jane/demo/
git pull --rebase jane
現在John和Jane就可以互相拉取對方的程式碼到自己的資料夾中; 愉快地開發了;
高洛峰2017-05-02 09:30:14
我覺得這個需求在分工上就衝突了
一個模組強依賴另一個模組,必然要進入等待
所以再細化你們的需求
User模組完成後就可以提交
此時你分支你的模組再繼續
你同事分支他的模組再繼續
這是標準流程
有個概念叫持續集成,越早進行集成操作對你們的代碼越有利
往下延伸的概念叫持續交付都是應付這種環境的 可以參考
我想大声告诉你2017-05-02 09:30:14
對於這種情況我建議這個方法:
從 feature/user
分支上开出一个新的分支 feature/user_login
当 feature/user
开发进入到可用的阶段时, 把代码往 feature/user_login
上合并
这样 feature/user_login
可以直接进行测试
当 feature/user_login
开发完毕后,合并到 feature/user
上
最后 finish
feature/user
這樣是將 feature/user_login
作为 feature/user
的一个子功能开发的
如果再做功能的时候不是这样设计的, 那最好还是将 feature/user
finish
后再开发 feature/login