In general, the Version Control System (VCS) of any development mode is built locally. In an enterprise mode, VCS are broadly categorized into two types, namely, centralized and distributed/decentralized version control systems:
Git and TFS are typical products of two models. After comparing the two models, the functionality differences are presented as follows:
S.No. | Git | TFS |
1 | Git is a Distributed Version Control System (DVCS). Changes are distributed between users. | TFS is file-system based and not change set-based. |
2 | By design, creating a branch is extremely quick and cheap, with very little overhead. | Creating branches is very expensive on multiple resources. |
3 | In terms of cost, Git is an open-source product. | Microsoft's license product. |
4 | On changing the file content, Git detects the hash difference and marks the file for check-in. During the check-in process, only the changed content goes up. It is more like a snapshot of the data and its difference. | As TFS is based on file-system properties, it is essential to check out a file before it can be committed. If you overwrite that file without checking it out, TFS will not be able to detect a change. |
5 | If you create 10 branches from a trunk, you are just referencing a snapshot, so the branches take up bytes of data instead of duplicating the data over. | Creating 10 branches from production is essentially copying that folder 10 times. |
6 | Git supports the concept of rebasing or pulling in changes from the trunk or even multiple sources. | TFS simply stores its changes as duplicate files on a server; not rebase. |