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

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

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

關於Git(一)

  1. 版本管理系統是什麼?為什麼要用?
  • 版本管理系統(Version Control System,VCS)是一種追蹤和管理項目代碼、文件和資源變更的工具。
  • 工作流程上可防止每個人因使用自己的開發程式搭配不同且不相容的工具所引起的混亂。版本控制會同步處理版本,並確定變更不會與其他人的變更衝突。當小組儲存新版本的程式碼時,版本控制會保留變更的歷程記錄,以及合併來自不同人員的修改。
  • 由於好的程式碼管理系統會大幅影響到開發效率,特別是當多人共同參與一個專案時。因此,工程師絕對需要版本管理系統。
  • 主要的版本管理系統有兩種類型:

集中式版本控制系統(Centralized Version Control System,CVCS): 所有的版本信息都保存在一個中央伺服器上,每次使用者檢出(checkout)代碼都是從這個中央伺服器獲取最新的版本。

例子:Subversion(SVN)

分散式版本控制系統(Distributed Version Control System,DVCS): 每個使用者擁有本地的完整版本庫,包括完整的歷史記錄。使用者可以在本地進行提交(commit)、分支(branch)和合併(merge),然後將這些更改推送(push)到其他地方。

例子:Git、Mercurial

為什麼要使用版本管理系統:

  • 協作: 允許多人同時在專案上工作,追蹤每個人的修改,並輕鬆地將這些修改合併在一起。
  • 歷史記錄: 提供了項目的完整歷史記錄,包括每一次的修改前和更動後的程式碼、修改者、修改時間和修改原因。這有助於了解代碼的演變過程。
raw-image


  • 版本控制: 可以方便地切換到項目的不同版本,當新版程式出現了錯誤,版本控制系統也可以非常快速地還原至舊版本。
raw-image


  • 利用分支同時開發不同功能: 使用「分支 (branch)」和「合併 (merge)」的技巧,讓開發者們能同時開發多個系統和功能,但在各自工作時,彼此之間的程式碼不會互相干擾。

下圖是某個專案的版本控制軟體截圖,給大家看看分支的真實呈現,在線圖上每一個點都是一個 commit (意即一組程式碼更動),其中分支 feature/payment 是一個獨立功能,負責的工程師在這個分支上持續開發,直到功能測試完成了,才整併到 dev 分支上;而 dev 這個分支又可能代表整個開發中的產品:

raw-image


  • 備份和還原: 提供了對項目的備份和還原功能,減少了由於錯誤或故障而導致的損失。
  1. 為什麼 Git 稱作「分散式」版本管理系統?

Git 已成為版本控制的全球標準。至於被稱為「分散式」版本管理系統,這是因為 Git 的工作方式和傳統的集中式版本管理系統不同。

※ 什麼式「分散式」版本管理系統?

簡單說每個開發者的本地存儲庫都包含完整的版本歷史和代碼庫。開發者可以在本地進行提交、分支操作等,而不需要即時與中央服務器通信。這使得每個開發者都具有獨立的本地存儲庫,不受中央服務器的影響。

  • 歷史(History)功能

在Repository (資料庫)裏的項目檔案具有歷史(History)功能。歷史(History)功能可以記錄一個項目(Project)在一段時間內的變化,它能告訴你在不同時間點內, 什麼人,在什麼時候,為什麼對項目中的那個檔案做出了什麼改動。

  • 開發功能
  1. 每個開發者都可以擁有獨立的檔案庫,所以可以直接對自己的檔案庫進行操作。
  2. 可以在離線的環境(例如飛機或高鐵之上)不中斷,連續工作,也可以持續進行修改,一方面獲得版本控制系統的支持(可以管理版本、查詢修改歷史、可以回溯、也可以持續提交寫下記錄訊息、……),另一方面也不需要將自己的修改,持續送至集中的檔案庫上,造成了其他開發者必須套用這些修改,引起可能的不穩定情況。
  3. 重視對分支(branch)的支援,具有較好的分支及合併的能力。
  4. 快速操作: 由於大部分操作都在本地進行,操作速度相對較快。
  • 優點:
  1. 免費
  2. 合併檔案速度非常快
  3. 儲存時間點速度非常快
avatar-img
奧莉薇走在成為後端工程師之路上
17會員
135內容數
全端網頁開發專業知識分享
留言
avatar-img
留言分享你的想法!
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
※ 什麼是MongoDB? MongoDB是一個開源、跨平台的非關聯式資料庫,屬於一種文件導向(Document-oriented database)的資料庫管理系統,也就是 NoSQL 數據庫管理系統(DBMS)。 ※ 什麼是非關聯式資料庫(NoSQL)? 非關聯式資料庫(NoSQL)的意思
※ 主題關鍵字 Git flow: ※ 說明: Git Flow 是一種基於 Git 版本控制系統的擴展,用於協助團隊進行項目的軟體開發和版本管理,就流程來說屬於概括性的流程。 這種工作流程定義了一組明確的分支模型,以協助有效地進行功能開發、修復錯誤和發布版本。 Git Flow
※ 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:顯
※ MySQL是什麼? MySQL是一種開源(免費)的關聯式資料庫管理系統,所以任何人都可以免費使用,是Web開發中最常用的資料庫之一。MySQL 會將資料儲存在由資料列與資料欄組成的資料表中。使用者可使用結構化查詢語言 (通常稱為 SQL) 來定義、操控、控管及查詢資料。  簡單來說,資料
※ 什麼是MongoDB? MongoDB是一個開源、跨平台的非關聯式資料庫,屬於一種文件導向(Document-oriented database)的資料庫管理系統,也就是 NoSQL 數據庫管理系統(DBMS)。 ※ 什麼是非關聯式資料庫(NoSQL)? 非關聯式資料庫(NoSQL)的意思
※ 主題關鍵字 Git flow: ※ 說明: Git Flow 是一種基於 Git 版本控制系統的擴展,用於協助團隊進行項目的軟體開發和版本管理,就流程來說屬於概括性的流程。 這種工作流程定義了一組明確的分支模型,以協助有效地進行功能開發、修復錯誤和發布版本。 Git Flow
※ 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:顯