2016-07-30 66 views
1

我現在處於目前的狀況,我不得不爲現有的仍在繁重的開發項目中開發功能。如何在跨月的功能分支內正確開發

該功能只能在完成完成後與主分支合併。但是,新功能的開發將需要大約3-4個月的時間。

所以我的工作流程,現在大致是:

  1. 制定關於我的特性分支(git add -u
  2. 提交和推到功能分支(git commit && git push
  3. 結帳和拉主(git checkout master && git pull
  4. 結帳功能分支並每天與主人合併(git checkout feature-branch && git merge master);在這裏,我祈求Git的霸主,我沒有得到討厭的合併衝突
  5. 沖洗和重複1-4

首先,就是這種做法「正確」的方式(如果有這樣的事情正確)?或者是git rebase這裏獲取線性歷史的首選方法?

我是什麼真正的錯誤日誌的樣子像:

Example git log

而且很明顯的日誌將只能得到按天廣,直到有一天我合併特性分支到主科。

回答

4

我認爲對於這種情況,你會更常用一個rebase工作流程。也就是說,不是重複合併來自主分支的更改,而是定期重新分配主分支。

最終結果是一樣的(如果主分支已更改爲您正在編輯的相同代碼,您仍然需要解決衝突),但最終結果是您的分支總是顯示爲分支關閉分支的一端,而不是遠端路徑中的某個點,並且由此產生的歷史實際上更清潔。

工作流程看起來是這樣的:

  1. 開發你的功能分支
  2. 提交更改
  3. 定期刷新掌握當地的master分支的副本(git remote update
  4. 再次基於( git rebase origin/master
  5. 沖洗並重復

可以git push作爲你喜歡你的分支裏的改變,雖然 注意到一個重訂後,你需要git push -f,因爲你現在 改變你的分支的歷史。

當你完成所有操作,並準備合併,您:

  1. git的結帳主
  2. 混帳拉
  3. 混帳合併的特徵分支
  4. 混帳推

This essay似乎是一個很好的工作流程概述。

+0

謝謝!這也是我的想法。只是爲了確保:如果我rebase然後*所有*我的提交功能分支將在主分支的提示?所以當我將這個功能合併到主設備中時,我在功能分支中的所有提交都將處於頂層?所以它看起來像:master - > {my 400 commits}? – Soift

+0

好吧,我的問題已在您提供的鏈接中得到解答。我想我不喜歡這種方法的唯一方法是重寫歷史。那麼時間戳總是從主分支最後一次提交開始? – Soift

+1

重新激活將保留提交的時間戳。 – larsks