後端技術考古題-開發工具 中篇

更新於 發佈於 閱讀時間約 5 分鐘

※ 主題關鍵字

  • Git flow:
raw-image


說明:

  1. Git Flow 是一種基於 Git 版本控制系統的擴展,用於協助團隊進行項目的軟體開發和版本管理,就流程來說屬於概括性的流程
  2. 這種工作流程定義了一組明確的分支模型,以協助有效地進行功能開發、修復錯誤和發布版本。
  3. Git Flow 可以針對不同的開發環境建置不同的測試或正式版本。
  4. 在Git Flow流程下,不同開發者可以同時開發不同功能,或者同時一起開發一個大功能。當開發和發佈同時進行時,彼此將不受影響。因此整個開發過程中,會有良好的共同程式開發和版本控制協作流程。
  5. 透過Git Flow所創造出一個具統一性、受規範、自動化(搭配 CI/CD)的開發流程,可以減少人為犯錯的風險、同時提升效率。

Git Flow五種分支的介紹:

  • 兩個長期存在的分支,且絕對不會被刪除:
  1. 主分支Master。
  2. 開發分支Develop。
  • 三種短期(臨時性)分支。開發完畢被merge進develop或master後就會被刪除的分支:
  1. 功能分支(feature branch)。
  2. 預發分支(release branch)。
  3. 修復分支(hotfix branch)。
raw-image


Git Flow包含五種分支負責處理不同的功能:

  1. Master: Master分支會專門放正式發布版本或隨時可以上線的版本。
raw-image
  1. Developer: 用來存放最新開發版本的代碼,是開發過程中代碼的中心分支。開發人員通常會以Developer這條分支為基礎,再開出Feature分支進行新功能的開發,當Feature的功能開發完畢,Feature的分支會合併回Developer。
raw-image
  1. Feature:Feature分支裡面主要是用來處理開發新功能,會是基於Developer分支開出來,功能完成時,再把開出來的Feature分支合併回Developer分支。
raw-image
  1. Release:用於支援準備發佈正式產品前的預備分支。允許修正小問題,並為發布版本準備或修改中介資料。
  2. HotFix:在Master分支中出現重大錯誤時,可以直接從Master分支建立HotFix分支來快速實施錯誤修正。
raw-image



  • GitHub flow
raw-image

整個 GitHub Flow 是基於主分支的一種輕量化工作流程,屬於 Git 的核心概念,目的在幫助團隊及專案定期的進行部署。它重點在於簡單、靈活且容易理解,特別適用於需要快速反應和頻繁交付的專案。

使用說明:

先有一個共有的遠端倉庫,然後各自用fork把遠端倉庫fork回到自己的倉庫。開發好後,再利用PR(pull request)回去共有的遠端倉庫,審核過後merge(合併)進master。

raw-image


※ GitHub Flow 的主要特點:

  1. 主分支(Main Branch): GitHub Flow 使用一個主分支,通常命名為 mainmaster,用於代表產品的穩定狀態。這是所有發布版本的基礎。
  2. 建立分支(Branching): 每當需要測試新功能、修復錯誤或進行任何其他工作時,團隊成員會在主分支的基礎上創建一個新的分支。這個分支將包含他們所進行的更改。分離出的新分支對 master 來說是非常重要的,因此分支命名應該具有描述性,讓其他人清楚知道分支正在進行的工作項目。
建立分支

建立分支


  1. 提交(Commits): 在分支上進行工作時,開發者將其更改進行提交(commit)。每次提交都應該要有相關的提交訊息(Commits Message),解釋此次提交內容。
Add Commits

Add Commits

2. 拉取請求(Pull Requests): 當在分支上完成一項任務時,開發者會向主分支提出拉取請求(pull request)。Pull Request 是一個通知團隊進行代碼審查、討論和測試的機會,因此對於協作開源專案和管理共享儲存庫的修改非常有用。

  1. 代碼審查(Code Review): 團隊成員將檢查拉取請求中的更改,提供反饋並確保代碼符合標準。這有助於確保代碼的質量和一致性。
拉取請求和代碼審查

拉取請求和代碼審查

4. 合併(Merge): 一旦拉取請求經過審查,並經過必要的更改和測試,就可以將其合併到主分支中。

合併

合併

5. 部署(Deploy): 已經被檢閱且通過測試的分支被合併到主分支上後,將被部署為生產版本,形成新的軟體發布。

部署(Deploy)

部署(Deploy)

※總結:

  • 所有在 master 分支都是可部署(Deployable)的。
  • 要增加新功能時,從 master 開一個此新功能的分支,分支命名應該具有描述性。
  • 需要回饋、幫助時,或是當完成新功能要合併(Merge)回 master 分支時,請使用 Pull Request。
  • 經過審查、測試過後,就可以合併回 master 分支。
  • 合併之後就可以馬上部署程式碼。



  • 什麼是 rebase:

說明: 

  1. rebase是 Git中的一個操作,主要用於合併分支或整理提交歷史。
  2. rebase 簡單來說就像「移花接木」,把你的分支接到別的分支上。
_images/rebase.png

_images/rebase.png

以上圖來說,就是把 New Branch 的變更整個接到 Master 上。

  • Rebase 的使用時機:
  1. 整理提交歷史:rebase 可以對提交歷史進行清理和整理。
  2. 將一個分支的修改整合到另一個分支:使用 rebase有助於保持歷史的簡潔性,避免不必要的合併提交。
  3. 解決合併衝突:在進行 rebase 時,會發生合併衝突。當解決衝突後,可以繼續應用剩下的修改。
  4. 避免合併提交:使用 rebase 可以避免產生大量的合併提交,可以讓提交歷史更加緊湊,更容易理解。
  5. 在提交到遠端之前整理分支歷史: 在推送分支到遠端之前,進行 rebase 可以確保提交歷史的整潔性,避免向遠端推送不必要的合併提交。


全端網頁開發專業知識分享
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
※ 必考題一: Command Line 工程師面試時通常不會著墨太多在此科目上,考題只考涵蓋的基本指令。 ※ 說明:Command Line是使用純文字與電腦溝通的方式,和圖形化介面 GUI是不一樣的。 ※ 常用基本指令: pwd=print the current directory:顯
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
※ 效能 What tools would you use to monitor or analyze your performance ? 中文意思:在監控或分析系統性能方面可能會使用哪些工具? ※ 解答: 常見的監控和分析工具,可分成以下6大類: 系統監控工具: 例如,Promethe
※ 資料庫與 SQL ※ 題目: 請寫出 SQL 讀取 people table 中所有 gender 是 M 而且 age 大於 18 的資料。 ※ 解答: SELECT * FROM people WHERE gender = 'M' AND a
※ Express 專案步驟筆記清單 Node.js 環境建置核對 新增專案資料夾 設定 package.json npm init -y 設定程式入口為 app.js 安裝 Express:npm install express 設定主程式 app.js 建構應用程式伺服器 設定
※ 必考題一: Command Line 工程師面試時通常不會著墨太多在此科目上,考題只考涵蓋的基本指令。 ※ 說明:Command Line是使用純文字與電腦溝通的方式,和圖形化介面 GUI是不一樣的。 ※ 常用基本指令: pwd=print the current directory:顯
描述我所瞭解的 Web 攻擊技術 何謂網路攻擊? 駭客透過各種系統漏洞或惡意程式,搭配許多技術和工具進行攻擊。目標是要在企業或個人電腦網路中損害、取得控制權或存取重要的文件和系統。 例如: XSS(Cross-Site Scripting,跨站腳本攻擊/跨網站指令碼):指網路罪犯透過存在安全
※ 效能 What tools would you use to monitor or analyze your performance ? 中文意思:在監控或分析系統性能方面可能會使用哪些工具? ※ 解答: 常見的監控和分析工具,可分成以下6大類: 系統監控工具: 例如,Promethe
※ 資料庫與 SQL ※ 題目: 請寫出 SQL 讀取 people table 中所有 gender 是 M 而且 age 大於 18 的資料。 ※ 解答: SELECT * FROM people WHERE gender = 'M' AND a
你可能也想看
Google News 追蹤
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
※ Git(三) 什麼是 staging area? 在 Git 中,staging area是暫存區的意思,也被稱為索引(index)。透過一個git add 指令把檔案從工作目錄移至暫存區。再透過一個git commit 指令把暫存區的內容移至儲存庫。 當多人協作時你要開發個功能,但不
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人
Thumbnail
製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
Thumbnail
菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
Thumbnail
初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
Thumbnail
在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。
Thumbnail
本文使用網站的 FB 登入做示範 採用 Laravel 8 + Socialite 5 使用 Session 記錄狀態 不同版本可能會有些許語法及方法上的差異,請自行調整 前言 最近因為碰到需要實作 OAuth 第三方登入的需求,只好把之前隨便看看的東西撿回來研究並實作。不過我找到多數現存的中文文章
提問的內容越是清晰,強者、聰明人越能在短時間內做判斷、給出精準的建議,他們會對你產生「好印象」,認定你是「積極」的人,有機會、好人脈會不自覺地想引薦給你
※ 簡短說明Git 和 Git Flow 是什麼?如何應用? Git 是什麼? Git是一個分散式版本控制軟體,能夠紀錄檔案的狀態變化,以及協調多個開發者之間的工作。它允許團隊成員協作編輯和管理項目的代碼庫,並且能夠追蹤文件的歷史變更、恢復到以前的版本、合併不同版本的代碼,以及解決代碼衝突等。
※ Git(四) 空的資料夾無法被加入 Git 進行版本控制,但這個資料夾如果又是很重要的資料夾,你會怎麼處理? 當空的目錄無法被加入 Git 進行版本控制時,有以下的做法可以解決: 在那個空目錄裡隨便放一個檔案就行了。 在這個資料夾中添加一個名為 .gitkeep 的空檔案,讓 Git 能
※ Git(三) 什麼是 staging area? 在 Git 中,staging area是暫存區的意思,也被稱為索引(index)。透過一個git add 指令把檔案從工作目錄移至暫存區。再透過一個git commit 指令把暫存區的內容移至儲存庫。 當多人協作時你要開發個功能,但不
※ 關於Git (二) 請寫下從 Github 上複製一個專案下來,做一次遞交,然後推上去會用到的所有 git 指令。 複製專案(Clone) markdown-here: git clone https://github.com/adam-p/markdown-here.git 如果在訊息
關於Git(一) 版本管理系統是什麼?為什麼要用? 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人
Thumbnail
製作檔案後續流程 -->底片-->曬版-->印刷機---印刷 -->出版----------->印刷機---印刷 最先接觸的是底片機,那時照相機還是膠捲時代,而報紙與周刊要印刷前都是輸出成透明黑字圖底片,再經由曬版功序進入印刷機。 出片機 以下廠牌為當時最大宗(中譯名),西元年是我
Thumbnail
菜雞成長故事 寫這一篇主因也是因為身邊朋友陸陸續續想往軟體業發展,或是想動手做做小專案,故才成就了這一篇心路歷程,這邊會介紹我的背景、學習管道跟我如何選擇第一個程式語言作為敲門磚跟學習時間,希望能幫助還在努力中或是預計要轉職的各位有一個方向或是參考?(雖然我依然還是一個小菜雞,請鞭小力)
Thumbnail
初學後端的人,可能對如何學習後端技術或語言會感到很困惑。 本篇文章提供了作者的幾種思路,幫助後端學員進行學習
Thumbnail
在工作室培訓難免會陷入低潮的原因,本篇文章分析了陷入低潮的原因,及提供預防及解決方法。
Thumbnail
本文使用網站的 FB 登入做示範 採用 Laravel 8 + Socialite 5 使用 Session 記錄狀態 不同版本可能會有些許語法及方法上的差異,請自行調整 前言 最近因為碰到需要實作 OAuth 第三方登入的需求,只好把之前隨便看看的東西撿回來研究並實作。不過我找到多數現存的中文文章