Announcing git-tf: Combining the local repository of Git with the integrated ALM of TFS

Download this episode

Download Video


Git-tf is a new cross-platform bridge which was announced today and allows developers to combine the local repository capabilities of Git with the integrated application lifecycle management tooling of Team Foundation Server.

Now you can use a Git repository locally, and when you're ready to, check in code to TFS. You can even continue to take advantage of integration between work items (such as bugs and requirements) in TFS when you want to enable end-to-end traceability of the relationship between your work and your code changes. This bridge is a cross-platform tool built with Java, so it runs on many operating systems, including OS X, Linux, and Windows. This means that you can use Git clients (such as Xcode) and maintain the ability to check code into Team Foundation Server.

In this video, Matthew Mitrik, a program manager on the Team Foundation Server team, shows off this new capability.

Source Code:

Note: In the video, Matt mentions that this works with both on-premises Team Foundation Server and the hosted Team Foundation Service ( Support for the Team Foundation Service is not quite enabled yet, but it is coming soon. This post will be updated when it is available.

8/30 Update: This now works with! More details here.





Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • wkempf

      I know I'm in the minority, but I would have preferred an hg-tf or bzr-tf, or all three.

    • BoyOfGreen

      Does this support all common git commands (branch, checkout, merge, fetch, remote etc)?  Awesome tool, its going to be a hit.

    • RedKnight

      @wkempf: You are not the only one Smiley ...

    • RichB

      Does it support reading TFS repositories with a 'tf /destroy /keephistory' in the history?

    • wkempf

      @RedKnight:Not the only one, but it's obvious we're in the minority. Sad Minority or not, though, we should still have hg-tf and bzr-tf.

    • bangoker

      @wkempf: +1 on the hg+tfs

    • AlanBarber

      +1 for hg-tfs... I already use HG with tfs manually but would be nice for a full bridge built into HG.

    • larrymccoy

      Looks interesting.  I was hoping to try out git for local source control when disconnected from TFS, but this should make it even easier!

    • Adam Dymitruk

      Git-TFS has been around for 2 years now. Why am I not shocked that people haven't heard of it? The fallout of NIH sales tactics is going to hurt Microsoft in the end.

    • Duncanma

      @wkempf: I haven't put any time into it, but if the source for this is available (and it appears to be), someone could build hg+tfs right?

    • briankel

      Git-TFS has been around for 2 years now. Why am I not shocked that people haven't heard of it? The fallout of NIH sales tactics is going to hurt Microsoft in the end.

      We are well aware of Git-TFS. We address this in the video, but you should also have a read of Brian Harry's blog where he goes into more detail around the history here. In short, Git-TFS is a Windows only solution whereas Git-tf runs anywhere that Java runs. Here is a relevant excerpt from Brian's blog:

      If you already live in both the Git and TFS worlds, this new tool may look eerily like the existing Git-tfs OSS project.  Well, you are right – they are very similar.  As starting a new OSS project that's very like another is generally considered pretty bad form, I want to say a few words about this.  When we decided that we really wanted to have a good Git/TFS integration solution, the first thing we thought of was to reach out to Matt Burke who owns the existing Git-tfs solution.  Matt Mitrik had a great conversation with him about what we were looking to do and the general direction he was taking the project.  One of our big requirements was to create a cross platform solution that works just as well on Windows, Linux or MacOS.  That really wasn't in the sights for the existing Git-tfs project and, together, we agreed that separate, cross platform solution made sense.  Hence Git-tf was born.

    • wkempf

      @Duncanma: In theory, though not having looked at the source code I can't say that it's a certainty that the source would give anyone any help at all when implementing an hg-tf. However, selfish or not, while I would love to have an hg-tf I don't have the time to create one, even if the git-tf source provides 90% of the work.

    • ethomson


      , BoyOfGreen wrote

      Does this support all common git commands (branch, checkout, merge, fetch, remote etc)?  Awesome tool, its going to be a hit.

      git-tf will create a git repository for you (or use your existing repository).  So yes - you can use all the git commands on your git repository - even working with another remote.  You can then "git tf checkin" to TFS from your master HEAD once you've made your changes.

    • ethomson

      @RichB:Interesting question that I hadn't thought about.  We'll check it out.

    • PeteGoo

      Is there a way to override the tf checkin name / description? I would hate to see "TF Merged Changeset 6" or similar in TFS history. Also, what about associating or resolving multiple work items in a single checkin?

    • Whirly101

      Great to see git-tf - I'll be trying it out very soon. I had mixed success with git-tfs which failed for me on projects with either lots of files, or a lot of history, or both.

      @PeteGoo - Your mug rocks! Where did you get it?

    • youhana​Naseim

      @RichB : yes git-tf will support reading from tfs servers with " 'tf /destroy /keephistory' in history. 

    • youhana​Naseim

      @PeteGoo : The ability to override the tf checkin description / comment is at the top of our backlog and we will be addressing this in future releases. Git-tf today supports associating and resolving multiple workitems during checking by using any of these options:

      1) Specify the parameter multiple times : git tf checkin --associate=1 --associate=2 --resolve=9 --resolve=10

      2) Specify multiple values delimited by commas (no space) : git tf checkin --associate=1,2 --resolve=9,10

    • Seb


      Those are thonly commands that git-tf.cmd gives me:

      The git-tf commands are:
      help Displays usage information
      clone Initializes a git repository from a TFS pat
      configure Configures an existing git repository to ad
      checkin Checks in changes to a TFS folder
      fetch Fetch the latest code from TFS into FETCH_H
      pull Pulls the latest code from TFS and merge/re
      shelve Shelves the changes to a TFS folder (Beta)

      Did I do something wrong?

    • youhana​Naseim

      @Seb:This is correct, these are the only command currently available. Which commands do you think are missing ?

    • Seb

      Sorry, my bad I did not read documentation well enough. I need to play with it a little more. Good job guys!

    • pnewhook

      Can I create a remote branch in TFS just by pushing a local branch?

    • youhana​Naseim

      @pnewhook: Due to the differences of the branching models in TFS and Git, we don't support branch creation in Git propagating new branches to TFS.

    • Alberto Silva

      Which versions of TFS are supported, will it work with TFS2008? And what about the TFS Services on Azure?

    • martinwoodw​ard

      @Alberto Silva: Should work with TFS 2008 although most testing is done against TFS 2010, TFS 2012 and with  To get it working with TFS Preview see the following instructions:

    • Alberto Silva

      Thanks Martin, will give it a try :)

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.