探索功能分支工作流程
功能分支工作流程背後的核心概念是,所有功能開發都在專用分支中進行,而不會在主要分支進行。
此封裝可讓多個開發人員輕鬆地處理特定功能,而不會干擾主要的程式碼基底。 這也表示,主分支永遠不會包含中斷的程式碼,這對持續整合環境來說是一大優點。
開發封裝功能也讓使用提取要求變得可能,這是可開始討論分支的方式。 他們允許其他開發人員在將功能整合進正式專案之前,就登出該功能。 或者,如果您卡在功能中,可以開啟提取要求,詢問同事們的建議。
提取要求讓您的小組可以非常輕鬆地對彼此的工作留下註解。 此外,功能分支也可以 (而且應該) 推送至中央存放庫。 這能允許與其他開發人員共用功能,而不需要觸及任何正式規則。
由於主分支是唯一的「特殊」分支,因此將數個功能分支儲存在中央存放庫並不會造成任何問題。 這也是備份每個人本機提交的便利方式。
發行分支工作流程
除了功能分支工作流程之外,Git 分支工作流程中另一個常用的策略是發行分支策略。 此策略涉及建立專門用於準備發行的專用分支。 發行分支通常是從穩定的功能分支建立,確保其只包含經過徹底測試和驗證的程式碼。 建立之後,發行分支會進行額外的測試、Bug 修正並穩定地工作,以準備程式碼基底來進行部署。 發行分支允許將發行相關的活動與正在進行的功能開發加以隔離,提供受控環境來完成並完善即將發行的版本。 在發行分支上進行了所有必要的調整和驗證之後,然後視小組的發行程序而定,將其合併到主要分支,或直接部署到生產環境。 發行分支策略可協助小組管理協調發行活動的複雜性,同時維護持續開發的穩定主要分支。
主幹型開發工作流程
主幹型開發工作流程會採用中央存放庫,主分支則代表官方專案的歷程記錄。 開發人員每次開始開發新功能時,都會建立一個新的分支,而不是直接在本地主分支上提交。 功能分支應具有描述性名稱,例如 new-banner-images 或 bug-91。 這個概念是給每個分支清楚且高度專注的用途。
在主分支與功能分支之間,Git 不會作任何技術上的區別,因此開發人員可以編輯、推出和提交功能分支的變更。
建立分支
處理專案時,在任何給定時間,您將處理許多不同的功能或構想,其中有些功能或想法已準備就緒,而另一些則還沒準備好。 分支的存在是要協助您管理此工作流程。 在專案中建立分支時,您就建立了一個供您嘗試新想法的環境。
除了為新功能或修正建立分支以外,遵循發行分支工作流程的小組也會建立特別用於準備發行的專用分支。 這些發行分支通常衍生自穩定的功能分支,以確保其包含經過徹底測試和驗證的程式碼。 建立之後,發行分支會進行額外的測試、Bug 修正並穩定地工作,以準備程式碼基底來進行部署。
新增提交
建立分支後,可開始進行變更。 每當新增、編輯或刪除檔案時,都會進行提交並將其新增到分支。
在處理功能分支時,新增提交可以追蹤您的進度。
提交還會建立一個透明的工作歷程記錄,其他人可以追蹤以瞭解您的動作和原因。
每個提交都有一條關聯的提交訊息,以說明進行特定變更的原因。
此外,每個提交都會視為個別的變更單位。 如果發現錯誤,或您決定往不同方向前進,它可讓您復原變更。
提交訊息至關重要,因為 Git 會追蹤變更,然後在變更發送到伺服器後將其顯示為提交。
透過撰寫明確的提交訊息,您可讓其他人更輕鬆地追蹤並提供意見反應。
開啟提取要求
提取要求會啟動關於您的提交的討論。 由於它們與基礎 Git 存放庫緊密整合,因此任何人都可以在接受您的要求時,確切地看到哪些變更會合併。
您可以在開發程序期間於任何時間點開啟提取要求:
- 您有很少的程式碼或是沒有,但想要分享一些螢幕擷取畫面或大概的想法。
- 您卡住了而且需要協助或建議。
- 您已經準備好讓某人檢閱您的工作。
您可以在提取要求訊息中使用 @mention 系統,詢問特定人員或小組的意見反應,無論他們是在走廊那頭或是距您 10 個時區。
提取要求有助於對專案提出貢獻,以及管理共用存放庫的變更。
如果您正在使用「分岔和提取 (Fork & Pull) 模型」,提取要求會提供一種方式來通知專案維護人員您想要考慮的變更。
如果您使用共用存放庫模型,提取要求會先開始程式碼檢閱和對話,再將建議的變更合併至主要分支。
討論與檢閱您的程式碼
開啟提取要求之後,檢閱您的變更的人員或小組可能會有問題或意見。
也許編碼風格不符合專案準則,變更缺少單元測試,或者一切看起來都很好,屬性也按順序排列。
提取要求的設計目的是鼓勵和擷取這種類型的對話。
您也可以繼續發送至分支,考慮關於您的認可的討論和意見反應。
假設有人批註您忘記執行某些動作,或者如果程式碼中有 Bug,您可以在分支中修正它,並發送變更。
Git 將顯示你的新提交和在統一提取要求檢視中收到的任何其他意見反應。
提取要求註解以 Markdown 形式編寫,因此,你可以嵌入圖片和表情符號,使用預先格式化的文字區塊,還可使用另一種輕量型格式化。
部署
使用 Git,你可以在合併到主分支之前從分支部署,以在環境中進行最終測試。
一旦您的提取要求經過檢閱,且分支通過您的測試後,您就可以部署您的變更來驗證這些變更。 如果您的分支部署現有的主分支造成問題,您可以復原它。
合併
變更驗證後,就可以將程式碼合併到主分支中。
合併之後,提取要求會保留您的程式碼變更的歷程記錄。 因為它們是可搜尋的,所以可讓任何人回到過去的時間點,以瞭解所做的決定的原因和方式。
您可以將特定關鍵字併入提取要求文字,以將問題與程式碼產生關聯。 當您的提取要求合併時,相關的問題也會關閉。
此工作流程可以協助組織和追蹤著重於商務網域功能集的分支。
其他 Git 工作流程 (如 Git 分支工作流程和 Gitflow 工作流程) 是以存放庫為中心的,並且可使用 Git 功能分支工作流程來管理其分支模型。