2017-08-17 190 views
0

我想了解功能分支git。我的理解是,術語功能分支僅僅是一種命名約定或方法,以幫助在添加新代碼時進行概念化和組織。Git特性分支有什麼特別之處嗎?

具體來說,我的理解是:

  • 添加前綴feature/分支名字只是一個約定(對比說origin/具有意義)
  • 沒有什麼本質特殊有關創建分支所謂feature/what-ever-my-new-feature-is
  • 它不會限制如何/在哪裏分支可以與任何其他分支合併
  • 仍然可以合併一feature/與任何其他分支,無論它最初從何處分支(例如,直接到master

我沒有把握一些根本的東西嗎?

+0

沒有什麼特別的功能分支,它們就像普通的git分支一樣,唯一的一點就是要爲應用程序添加新的功能因此被稱爲特徵分支 –

+0

你是對的,所有的分支名稱都是(大部分)沒有意義,並且只是按照慣例命名。實際上,分支名稱唯一可能重要的是像CM/CI這樣的事情。例如,您可以將BitBucket設置爲* only *允許從'feature /'分支到'release /'分支或其他任何地方的請求。同樣,你可以像Jenkins或TeamCity *那樣只提取自動構建觸發器的「特性/」分支。所以在這些情況下,名字確實很重要。 – CoryKramer

回答

1

使用git「功能」分支更多的是與一個開發團隊一起工作時以一致的方式進行溝通。

使用特徵分支的兩種常見分支策略是GitFlowTrunk。您可以深入瞭解它們,看看它們可能對您的開發工作流程有所幫助。

正如@CoryKramer所提到的,帶有標準前綴(例如Feature,Hotfix,Release等)的分支前綴對於使用Jenkins,Bamboo,CircleCI,TravisCI等持續集成工具實現自動化開發過程最有幫助。通常的做法是爲特定的功能分支產生構建,並防止合併到主,直到功能成功構建,代碼審查並具有適當的測試覆蓋率。

+0

我以爲我讀了一個地方,使用'功能/'分支_does_實際上影響和組織您的'.git/refs/heads/feature'內的文件夾結構不同,但是否增加了任何東西給我。 – skube

+0

我不太瞭解git如何在引擎蓋下組織前綴分支的差異,所以我無法在那裏幫助。合併行爲仍然相同。 – axlj

0

除了寫的東西之外,我還要補充一點:您提到以origin/開頭的「分支名稱」是特殊的;但這不完全正確。

origin/master不是具有特殊名稱的分支。您通常看到的origin/master實際上是refs/remotes/origin/master - 遠程分支引用,與分支不同。 (一個分支是一種ref,所以類似的詞彙在它周圍有點混淆,但是一個分支是一個ref,默認情況下,當你在簽出時提交的時候會移動一個分支。遠程分支ref是一個ref默認情況下,移動與相應的遠程通信過程中根據需要)。

(如果你有一個分支命名爲origin/master,這將是refs/heads/origin/master,並且在這種情況下,origin/前綴是沒有意義的,就像任何其他。但一個忠告:不要這樣做,只會導致混淆。)

相關問題