2013-04-05 58 views
1

我在看一些分支機構管理使用Git的細微之處,並立足我的一些決定本文圍繞:原產用git管理本地特性分支的最佳方法是什麼?

http://nvie.com/posts/a-successful-git-branching-model/

現在我們有一個稍微簡單的場景在這裏,遠程我們有masterdevelopment_branch。就所有開發人員而言development_branch是克隆的主要地方,當我們有一個穩定的版本時,我們只從開發合併到主。

現在考慮到這一點,我們有一系列的故事,我們需要通過每個衝刺,所以我們現在做的是克隆development_branch然後爲我們正在處理的故事/功能創建一個新的分支,如product_description_feature 。這個本地分支然後工作,所以如果我們需要拿起另一個任務或做某種修復,我們有乾淨的development_branch返回並分支。

現在問題來了周圍的過程中這種方式工作,目前安全的選擇似乎是以下過程:

  • 克隆development_branch
  • 的任務創建新的分支(我們稱之爲feature_a在這個例子中)
  • 提交到feature_a分支,直到任務完成
  • 切換到本地development_branch
  • 拉從原點向下的任何新變化(通常反正經常的事情)
  • 合併來自feature_a變成development_branch
  • development_branch本地原產
  • 下一個任務

創建新的分支現在,工精細,每個人都很開心,但是要更頻繁地拉採取以下情形:

  • 克隆development_branch
  • 的任務創建新的分支(我們稱之爲feature_b在這個例子中)
  • 提交到feature_b分支
  • 您實現攔截,並要拉最新變化
  • 切換到development_branch
  • development_branch原產地
  • 切換到feature_b
  • development_branch本地合併到feature_b
  • 繼續工作,直到完成

現在似乎是安全和每個人都很開心,但我不知道如果我NEED切換到development_branch和下拉再切換回併合併到我的本地特性分支。那麼我在這裏只是過於謹慎,應該從development_branch原點拉到當地feature_b分支?

這似乎應該沒問題,因爲我所做的只是將更改直接帶入我的本地功能分支而沒有更新我的本地development_branch,那麼如果我需要推送更改,我會再次切換,拉,合併,推動。

那麼有人可以確認這是否是好的做法或不等等?

同樣沒有過多地污染問題,因爲這些功能分支只存在於每個開發人員機器上,所以在某人完成一項任務時會發生什麼情況,那麼其他人需要撿起它?你可以把這個分支推到原點,讓它們把它拿下來然後再去處理,但是那樣會需要進一步清理,所以我假設沒有好的方法來解決這個問題,但是我會對聽聽別人如何解決這個問題,而不需要遠程創建過時的功能分支的荒地。


一對夫婦的其他東西更何況,我們現在只是FFWD合併,所以雖然原來的文章中引用它提及不FFWD合併我看不出你如何能做到這一點,而無需創建遠程分支機構的數量巨大。我使用Tortoise GIT而不是命令行,但是這不應該改變任何東西。

+0

對我來說,使用像GIT這樣的分佈式修訂控制系統的主要原因之一是避免進入分支/合併地獄。就個人而言,這聽起來像你的團隊正在做出很多分支,因爲反對早期提交併經常到達主線。當然,我們也會在推動對中央倉庫的更改之前採用持續部署和代碼審查。 – 2013-04-05 15:52:22

+1

git中的分支只是引用提交的輕量級指針。儘管通過將它們放在遠程回購上,您可能會得到很多功能分支,但它不會增加任何重要的開銷。在功能合併到您的'development_branch'後,您確實可以刪除並刪除功能分支。另一個可接受的做法是在同步時,使用rebase在遠程更改之前添加(未卸除的本地)更改,然後再推回新的重新發布的更改以避免歷史中的額外合併,並且具有更多線性更改。 – Tuxdude 2013-04-05 16:15:57

+0

@ mike-brant您說得對,我們轉移到git的原因之一是刪除了非分佈式VCS的合併和分支惡夢。但是,由於分支和合並變得更容易,因此您可以更輕鬆地更好地使用分支和合並。我很同意這篇文章的作者所說的一切,都是用他的方式(對或錯),這就是爲什麼我主張以這種方式工作。我們並沒有真正煩惱代碼審查,因爲我們有一個環境構建腳本,它運行一套單元,集成和驗收測試,所以如果它們順利通過的話! – Grofit 2013-04-06 09:00:45

回答

2

如果您需要來自其他分支的最新更新,可以跳過兩個分支交換機。

​​

至於你關於工作流程的問題,這都是一個政策問題。我的工作地點使用項目分支機構,我們只是自己去清楚地指出他們的壽命。我們知道什麼時候分支出生,我們知道什麼時候需要死亡。這是使用-d標誌刪除分支的好處。

git branch -d feature_branch 

通過做這種方式(而不是與-D),可以確保分支已合併到主線。否則它會阻止你。所以,你可以相當自由地使用這個刪除命令。

+0

是的,因爲我們正在使用ffwd合併它,不像它的問題,如果我們刪除分支後創建它們,如果他們以某種方式進入原點。 – Grofit 2013-04-06 08:56:31

相關問題