I found one nice artical talking about Git v/s TFVC and think it’s worth to share.

Git (distributed)

Git is a distributed version control system. Each developer has a copy of the source repository on their dev machine. Developers can commit each set of changes on their dev machine and perform version control operations such as history and compare without a network connection. Branches are lightweight. When you need to switch contexts, you can create a private local branch. You can quickly switch from one branch to another to pivot among different variations of your codebase. Later, you can merge, publish, or dispose of the branch

TFVC (centralized)

Team Foundation Version Control (TFVC) is a centralized version control system. Typically, team members have only one version of each file on their dev machines. Historical data is maintained only on the server. Branches are path-based and created on the server.

TFVC has two workflow models:

  1. Server workspaces - Before making changes, team members publicly check out files. Most operations require developers to be connected to the server. This system facilitates locking workflows. Other systems that work this way include Visual Source Safe, Perforce, and CVS. With server workspaces, you can scale up to very large codebases with millions of files per branch and large binary files.

  2. Local workspaces - Each team member takes a copy of the latest version of the codebase with them and works offline as needed. Developers check in their changes and resolve conflicts as necessary. Another system that works this way is Subversion.

Moving from TFVC to Git

If you have existing TFVC repos, you can migrate them to Git repos using the git-tfs tool. The tool allows you to migrate a TFVC repo to a Git repo in just a couple of commands.

Git and TFVC capabilities

Capability TFVC Git
Changes Team members can concurrently change files on their dev machines. You upload (check-in) changesets to the server when you create them. You can upload your changes at any time. However, you might be interrupted by conflicts.You can change the comment of a changeset after you check it in. You can link changesets to work items and associate them with completed builds. Team members can concurrently change files on their dev machines. You create commits on your dev machine independently of contributing them to the team. When you’re ready you must pull the latest commits before you upload (push) yours to the server. When you pull, you might be interrupted by conflicts.You can amend the latest local commit. You cannot change older commits. You can link commits to work items and associate them with completed builds.You can modify and combine local commits from the command prompt.
Branching Path-based branches are used mostly as long-standing constructs to isolate risk of change among feature teams and releases. Team members typically set up an additional workspace for each branch they work on.Changes in each branch are independent from each other, so you don’t have to check them in before switching from one branch to another. Merging between sibling branches requires a baseless merging.You can get visualizations of your branch structures and where your changesets have been merged.See Use branches to isolate risk in Team Foundation Version Control. Branching is lightweight and path independent. Many developers create a branch for each new feature they are coding, sometimes on a daily basis. You can quickly switch from one branch to another to pivot among different variations of your codebase. You can create branches that exist only on your dev machine and share them if and when you’re ready.You must commit, branch, stash, or undo changes before switching branches. Merging is simple and independent of the commit that the branch is based on.You can compare branches to see which commits exist on which branches.See Use Git branches to switch contexts, suspend work, and isolate risk.
Conflict resolution You might have to resolve conflicts when you get, check in, merge, or unshelve. You can resolve all types of conflicts in Visual Studio. You might have to resolve conflicts when you pull or merge. You can resolve content conflicts in Visual Studio or from the command prompt.
File storage You can check in large binary files. You might also want to use NuGet in combination or as an alternative. You can check in small binary files as you would regular files. When working with large binary files, use Git-LFS to store your large binary files in Team Services.
History File history is not replicated on the client dev machine and so can be viewed only when you’re connected to the server. You can view history in Visual Studio and on the web portal. You can annotate files to see who changed a line, and when they changed it. File history is replicated on the client dev machine and can be viewed even when not connected to the server. You can view history in Visual Studio and on the web portal. You can annotate files to see who changed a line, and when they changed it.
Tag your files You can apply labels to a version of one or more files from either Visual Studio or the command prompt. Each file can have label applied to a different version. You can apply tags from the command prompt to individual commits. View tags in the Visual Studio history window.
Roll back changes You can roll back one or more changesets You can revert a commit.
Scale You can work on small or very large scale projects using local workspaces. Supports massive scale (millions of files per branch and large binary files) projects using server workspaces. You can quickly begin small projects. You can scale up to very large projects, but you have to plan ahead to modularize your codebase. You can create multiple repositories in a team project.

Server

Capability TFVC Git
Client software Visual Studio, Eclipse (with Team Explorer Everywhere) Visual Studio, Eclipse, and other third-party tools
Files You can browse your files using Source Control Explorer in Visual Studio, or using Windows File Explorer or the command prompt. You can browse your files using Windows File Explorer or the command prompt.
Manage work on your dev machine Pending changes and my work pages. Changes, commits, and branches pages.
Suspend your work You can suspend from my work page or shelve your changes. You can create a branch from (from Visual Studio or the command prompt) or stash (from the command prompt)
User interface Visual Studio: Offers all commonly used features and many advanced features.TFS web portal: Can browse, comment, annotate, and see history of the codebase.TF Command prompt: Installed with Visual Studio. Used for advanced, administrative, and other less common tasks. Visual Studio: Offers many commonly used features. Features for some common tasks are not yet available.TFS web portal: Can browse, comment, annotate, and see history of the codebase.Third-party command prompt: You can install it from Visual Studio. Used for some common and many less common tasks.
Visual Studio compatibility You can use all supported previous versions of Visual Studio. Git is built in with Visual Studio 2017, 2015, and 2013.You can also use Visual Studio 2012 Update 4 (you must also install Visual Studio Tools for Git).
Web portal You can browse your codebase (including branches), view history, annotate and comment on changesets and shelvesets, and perform other tasks such as ad hoc downloading of selected parts of your codebase as a .zip file. You can browse your codebase, view history, compare branches, annotate and comment on commits, and perform other tasks such as ad hoc downloading of selected parts of your codebase as a .zip file.

Client

Capability TFVC Git
Client software Visual Studio, Eclipse (with Team Explorer Everywhere) Visual Studio, Eclipse, and other third-party tools
Files You can browse your files using Source Control Explorer in Visual Studio, or using Windows File Explorer or the command prompt. You can browse your files using Windows File Explorer or the command prompt.
Manage work on your dev machine Pending changes and my work pages. Changes, commits, and branches pages.
Suspend your work You can suspend from my work page or shelve your changes. You can create a branch from (from Visual Studio or the command prompt) or stash (from the command prompt)
User interface Visual Studio: Offers all commonly used features and many advanced features.TFS web portal: Can browse, comment, annotate, and see history of the codebase.TF Command prompt: Installed with Visual Studio. Used for advanced, administrative, and other less common tasks. Visual Studio: Offers many commonly used features. Features for some common tasks are not yet available.TFS web portal: Can browse, comment, annotate, and see history of the codebase.Third-party command prompt: You can install it from Visual Studio. Used for some common and many less common tasks.
Visual Studio compatibility You can use all supported previous versions of Visual Studio. Git is built in with Visual Studio 2017, 2015, and 2013.You can also use Visual Studio 2012 Update 4 (you must also install Visual Studio Tools for Git).
Web portal You can browse your codebase (including branches), view history, annotate and comment on changesets and shelvesets, and perform other tasks such as ad hoc downloading of selected parts of your codebase as a .zip file. You can browse your codebase, view history, compare branches, annotate and comment on commits, and perform other tasks such as ad hoc downloading of selected parts of your codebase as a .zip file.

Integration and migration

Capability TFVC Git
CodePlex support CodePlex is supported. CodePlex is supported.
Migration path Git-TFS Git-TFS

Please do let me know your thoughts/ suggestions/ question in disqus section.


Related Posts

About Ajeet Chouksey

As Technology Architect, Ajeet has over 12+ years of industry experience delivering enterprise solutions on the Microsoft Platform. Ajeet is passionate, certified technologist, blogger and community contributor. His specialisms are Azure IaaS/PaaS, Automation, DevOps, Agile based development processes supporting distributed teams (on shore & off shore), designing and implementing the appropriate infrastructure and platform solutions to meet the functional, operational, and deployment requirements throughout the solution life-cycle. Ajeet is member of various technical communities and discussion groups. He also conducted many boot camps on Azure and DevOps.