軟體開發流程與版本控制(Software Development Workflow & Version Control)

avatar-img
發佈於軟體開發
更新於 發佈於 閱讀時間約 5 分鐘

🔹 什麼是版本控制?

版本控制(Version Control)是一種用來追蹤檔案變化的系統,主要用來管理程式碼,但其實任何文件都能用版本控制來管理。

想像一下:

  • 工程師每天都在改程式。
  • 如果改壞了、想回到昨天的版本怎麼辦?
  • 如果兩個人同時改同一份檔案又該怎麼合併?

這時候就會需要版本控制工具,最常見的就是 Git

🔹 Git 是什麼?

Git 是一個分散式的版本控制系統。你可以把它想成:

像 Google 文件那樣,記得你每一個修改紀錄,但是專門給程式碼用的,還能多人協作、安全又可回溯。

用 Git 可以做到:

  • 看誰改了哪一行
  • 隨時回到任何一個歷史版本
  • 支援多人同時改不同功能,最後再合併起來

🔹 GitHub 是什麼?

GitHub 是一個放 Git 專案的網站,也就是程式碼的「雲端主機」,讓團隊可以在線上共享、審查、協作開發。

Git 是技術,GitHub 是平台。

🔹 Branch(分支)是什麼?

在 Git 裡,「分支」就像是主線外開出的一條小路,可以讓工程師在不影響主線(通常是 mainmaster)的情況下開發新功能、修 bug。

想像情境:

  • main 分支就像正式的產品。
  • 工程師想加一個「新功能 A」,就會從 main 拉出一條 feature/A 分支。
  • 他在 feature/A 分支上寫、測試,等都完成、確認沒問題,再「合併(merge)」回 main,讓正式產品也有這個功能。

🔹 Pull Request(PR)是什麼?

當開發者完成一個功能分支的開發後,他們會發出一個 PR(Pull Request),意思是:「我寫好了,可以請別人幫忙審核並把它合併進主線嗎?」

🔹 CI/CD 的基本概念

CI(持續整合,Continuous Integration)

CI 是指開發者將程式碼頻繁地(通常是每天多次)合併進主分支(例如 main),並且透過自動化工具來進行編譯、測試、驗證,確保新提交的程式碼不會破壞系統。

CI 的關鍵

  • 開發者將自己的程式碼提交到 Git 存儲庫。
  • 每次提交(push)後,CI 工具會自動拉取最新的程式碼,執行測試、構建等操作。
  • 如果測試通過,才會繼續進行合併或部署。

CD(持續交付,Continuous Delivery)

CD 是指把 CI 過程中已經測試過且合格的程式碼,自動部署到測試環境或預生產環境中,確保每個版本都可以被隨時交付。

CD 的關鍵

  • 在 CI 的基礎上,CI 完成後,會自動將已測試的程式碼部署到其他環境。
  • 這樣可以隨時、快速地將新功能或修復部署到生產環境。

CD(持續部署,Continuous Deployment)(高階)

與持續交付相似,但在持續部署中,每次測試通過後,程式碼會自動部署到生產環境。這是一個更加自動化的過程。

🔹 CI/CD 與 Git 的搭配

Git 在 CI/CD 流程中扮演了核心角色。下面是 CI/CD 流程中如何與 Git 整合的具體步驟:

1. 開發者編寫程式碼並提交到 Git(推送到遠端分支)

開發者在本地端的分支上寫好程式碼後,會將變更推送到遠端 Git 存儲庫(如 GitHub)。

2. CI 工具觸發自動化流程

每次提交代碼後,CI 工具(如 Jenkins、GitHub Actions、GitLab CI、Travis CI)會檢測到變動,並自動啟動構建過程。

這包括:

  • 拉取程式碼
  • 執行單元測試、集成測試
  • 編譯程式碼(如果有需要)

3. 測試結果回饋

CI 工具會在測試完成後提供結果。

  • 如果測試成功,程式碼可以繼續處理,進入到下個階段。
  • 如果測試失敗,開發者會收到通知,並且需要修正錯誤後重新提交。

4. 自動部署到測試環境

當程式碼通過所有測試,並成功進行構建後,CI 工具會自動將代碼部署到測試環境或預生產環境中進行進一步驗證。

5. 代碼合併(如果是多分支開發)

如果是 feature 分支開發的話,CI 工具會觸發 Pull Request(PR),讓其他開發者進行代碼審查和合併。

  • 當 PR 通過審查後,會將其合併到 main 分支。
  • 然後會觸發部署流程,將最新的代碼推送到生產環境。

6. 自動部署到生產環境

在某些高效能團隊中,當程式碼經過所有測試且合併後,會自動部署到生產環境。這稱為「持續部署(Continuous Deployment)」。



留言
avatar-img
留言分享你的想法!
avatar-img
hello maple
4會員
81內容數
各種工作及生活中的小小紀錄
hello maple的其他內容
2025/04/30
從監控工具到 SRE 方法論,本文帶你了解如何透過日誌、告警、自動化與可靠性指標,實現高效交付與系統穩定並行的產品維運策略。
Thumbnail
2025/04/30
從監控工具到 SRE 方法論,本文帶你了解如何透過日誌、告警、自動化與可靠性指標,實現高效交付與系統穩定並行的產品維運策略。
Thumbnail
2025/04/29
這篇文章探討了虛擬機和容器的優勢與局限,並探討了在不同需求下如何選擇最適合的技術,幫助企業實現更靈活和高效的 IT 運維。
Thumbnail
2025/04/29
這篇文章探討了虛擬機和容器的優勢與局限,並探討了在不同需求下如何選擇最適合的技術,幫助企業實現更靈活和高效的 IT 運維。
Thumbnail
2025/04/29
在現代網路與雲端架構中,負載平衡(Load Balancer)、橫向擴展(Scale Out)、以及 API 溝通機制是不可或缺的基礎。本文帶你快速理解負載平衡如何分散流量、系統如何透過擴展應對成長需求,以及 API 在不同服務間扮演的溝通角色。
Thumbnail
2025/04/29
在現代網路與雲端架構中,負載平衡(Load Balancer)、橫向擴展(Scale Out)、以及 API 溝通機制是不可或缺的基礎。本文帶你快速理解負載平衡如何分散流量、系統如何透過擴展應對成長需求,以及 API 在不同服務間扮演的溝通角色。
Thumbnail
看更多
你可能也想看
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
這篇文章將介紹工程師使用版控和git的相關知識和技能,包括版本控制的意義和git的基本指令,以及開發流程和webhook的概念。
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
因為最近想嘗試編碼風格,於是就選了一套比較"不嚴格"的輔助工具來摸索。 編輯器 VS CODE 框架 VUE3 打包工具 VITE 編碼風格 Standard 環境 version { "nodejs":"v18.18.0", "npm":"9.8.1" }
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
本篇文章介紹如何使用Git Bash進行版本控制操作,包括創建repository、查看狀態、歷程以及加入暫存和提交暫存等操作。透過基本的Git指令,您可以更深入地瞭解Git工具的使用方法。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
軟體系統的發展歷程大多相似,首重解決基本需求、提供操作介面,進而提升安全性、擴充功能、優化操作。
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
列出一套完整的程式 程式設計有許多種方法,不過通常會先列出清單的再逐一執行,這樣會加快程式設計的速度。設計通常會採取順推的辦法。所以順推的程式設計方式就是經歷觀念溝通、系統分析、資料統合、權限管理、頻率與時間、後台管理、畫面設計等等階段後,將框架設計完了以後,先列出一套完整的程式,將所有使用者都確
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
確保沒有遺漏或錯誤 程式的完整資訊資料對於程式設計至關重要。這是因為只有透過完整的資訊,我們才能確保在程式設計中沒有任何遺漏或錯誤。最終,後台管理扮演著管理系統中所有動作和行為是否符合特定標準的重要角色。 採取不符合預期的行動 這種符合性的重要性在於,當我們設計程式時,希望使用者按照預期的方式
Thumbnail
權限管理=新增、修改、刪除+審核 通常,這種程式的設計會包含權限管理,其中包括現場修改、刪除等三大類功能。然而,根據經驗,我們還需要關注另一類功能,即審核權限。 審核不執行新增 審核權限通常不執行新增的動作,僅限於某些欄位的輸入。新增、修改、刪除這些操作基本上是容易理解的。也就是說,對於這個工
Thumbnail
權限管理=新增、修改、刪除+審核 通常,這種程式的設計會包含權限管理,其中包括現場修改、刪除等三大類功能。然而,根據經驗,我們還需要關注另一類功能,即審核權限。 審核不執行新增 審核權限通常不執行新增的動作,僅限於某些欄位的輸入。新增、修改、刪除這些操作基本上是容易理解的。也就是說,對於這個工
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News