TFS v.s Git

許博淳
數據共筆
Published in
4 min readApr 1, 2023

我相信多數人應該是先使用了 TFS多年後,才轉換到 Git,我則是相反,從均一教育平台來到趨勢,從使用 GitLab,單一主環境和 GCP,到 TFS,分層及開發環境和地端資料中心,我嘗試寫一篇文章分析兩者的使用心得。

在撰文當下,Data Pipeline已經陸續搬到 Azure上,也使用 GitHub做版本控制,但方式還是非常像 TFS阿 XD

概念面的不同

在版本控制上,TFS 和 Git剛好是兩個極端的應用,因此我們先來講背後的原理

集中式版本控制 V.S 分散式版本控制

集中式版本控制有唯一的中央版本,需要保持連線下進行操作。

分散式版本控制在每個使用者的本機端都有一份完整的備份,只有在要真正上 code及請求 code review時需要連線。

集中式版本控制優點

  • 複雜的二進位檔案,或是無法版本控制的圖片和影片

Git 優點

  • 不用保持連線
  • 有多個備份
  • 草稿也可以上傳

看完之後應該可以看得出來,Git好處比較多,至少我是這麼認為啦 XD

多數的時候我覺得維基百科看完就陷入危機,但我覺得這篇真的很棒: https://zh.wikipedia.org/zh-tw/%E5%88%86%E6%95%A3%E5%BC%8F%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6

其他資料來源

https://git-scm.com/book/zh-tw/v2/%E9%96%8B%E5%A7%8B-%E9%97%9C%E6%96%BC%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6

什麼是 TFS

Team Foundation Server,主要會使用到以下三個功能

  • check in: 將修改完的檔案簽入,類似 git add
  • check out:
  • get latest: 獲取最新的版本,類似 git pull

以我現在接觸到的情況,通常會針對每一個 DataBase,分出以下的檔案

  • Initial: 如果要更新 Table, View or Stored Procedure,要把整份程式碼放入
  • LoadData: Insert Data or Execution Procedure,插入新的資料或是起始的資料,或是執行更新後的 Procedure。
  • Delete: Delete data or Drop table,用來刪除資料或是 Table, View or Procedure.

什麼是 Git

Git 需要把整份 Repository拉到本機端,創造一個分支,修改,最後將修改完的分支推到主枝幹並提出 Merge Request。
流程大概是

  1. git clone: 將整個 Repository下載到本機端
  2. git branch 分支名稱: 創造一個屬於這次修改的 Branch
  3. 修改修改 . . .
  4. git add 被修改的檔案名稱: 建議每修改一個檔案就加入一次,不要一次加入多個檔案
  5. git commit -m”本次修改的內容”
  6. git push origin 分支名稱:將修改完的分支推上去主枝幹

其中 3–6可以反覆很多次,直到最後確定送出 Merge Request(MR) / Pull Request(PR).

不論是送出 MR, PR or Check in之後的步驟非常相似

  1. 自動化測試:不一定有,但可以增加更多的信心和減少不必要的繁瑣檢驗。
  2. Code Review: 由資深夥伴或同儕協助審核程式碼內容,給予建議,同時也可以討論。

2. 修改後重新送出:根據討論結果修改,重新提交修改後的內容。

3. 合併分支:確認無誤後修改進主枝幹

其中步驟 2和 3可能反覆多次。

我還是喜歡 Git,相對容易,也有非常多的教學資源可以找得到,可見的未來一定會越來越多人使用,我認為是值得學習和使用的。

參考文件

https://blog.darkthread.net/blog/tfvc-vs-git/

--

--