跳至主要內容
Fredrick's Lab

Git版本控制工具筆記

medium

Git版本控制工具筆記

在工程師們共同開發一個專案時,因為需要同時進行不同功能的開發,因此就會需要能夠整合每個人開發進度與版本的工具,而版本控制工具又分成散式集中式,兩種適合不同情境的開發團隊。

Git是什麼?

  • Git是一種分散式版本控制的工具,可以從遠端拷貝一個git repository到本機端離線作業。
  • 分散式優點:伺服器壓力小、速度快且靈活、離線工作。
  • 分散式缺點:學期週期長、不符合直覺、程式碼保密性差。

集中式版本控制工具

  • 集中式例子如 SVN(Subversion),每個版本有唯一的URL,需要從網址獲取程式碼和資料。
  • 集中式優點:管理方便、符合直覺、適合開發人數不多的專案
  • 集中式缺點:伺服器壓力大、一定要能夠連到伺服器

使用Git開發專案時,又會分成兩種開發流程,分別為 Git FlowGithub Flow,它們也有各自的使用情境。

Git Flow

  • 最早誕生的工作流程。
  • 兩種長期存在的分支:Master(對外發布最穩定的版本)、Develop(存放最新的版本)。
  • 三種短期分支:功能分支(feature branch)、修復分支(hotfix branch)、預發分支(release branch)。
  • Feature Branch是由Develop發展出來的分支,用於功能的更新,開發完成後再併入Develop。
  • Hotfix Branch是由Master發展出來的分支,用於修改Master的bug,修改完成後再併入Master與Develop。
  • Release Branch是由Develop發展出來的分支,用於版本測試,測試完成後再併入Master與Develop。

圖片來源:http://superlevin.ifengyuan.tw/sourcetree%E5%AF%A6%E4%BD%9Cgitflow%E6%95%99%E5%AD%B8/

Github Flow

  • Github Flow是一種以Master Branch為主的輕量化專案開發流程,先有一個共有的遠端倉庫(Remote Repository),然後各自把遠端倉庫fork回到自己的倉庫。開發好後,再利用PR(Pull Request)回去共有的遠端倉庫,審核過後merge進master。
  • 比Git Flow多兩個東西:Fork、PR(Pull Request)。

流程

  • Branch:在開發專案的過程中,會有一些功能尚未開發好,這時候會需要建立Branch來管理工作流程。因為在Branch上做的調整不會影響main branch。
  • Commit:可將變更儲存進一個新的紀錄點,讓共同開發者可以理解這個更新版本的意義。
  • Pull Request:發起一個請求,若管理者同意,則會將commit merge到main branch中。
  • Discuss and review code:在pull request建立好之後,可以與共同開發者討論這次的變更是否有問題。
  • Deploy:在merge到main branch之前,可以部署到實際的環境,或者一個測試用的環境,檢查目前的變更版本是否ok。
  • Merge:部署確認ok後,就可以將變更的branch merge到main branch。

圖片來源:https://build5nines.com/introduction-to-git-version-control-workflow/

筆記參考資料:https://medium.com/@lf2lf2111/%E4%B8%89%E7%A8%AE%E7%89%88%E6%8E%A7%E6%B5%81%E7%A8%8B-29c82f5d4469