How to Contribute to Git (on Windows)

Git was originally designed for Unix systems and still today, all the build tools for the Git codebase assume you have standard Unix tools available in your path. If you have an open-source mindset and want to start contributing to Git, but primarily use a Windows machine, then you may have trouble getting started.

In fact, while responding to comments on Reddit about my previous post on Microsoft’s performance contributions to Git, I got the following comment:

"Then you know C and are ready to start contributing to Git!" "Where does one start, though?"

We have a team at Microsoft that contributes to Git and Git for Windows, and our primary development machines all run Windows. Windows users are also our primary customers, but we also want our improvements to Git to be accepted upstream to benefit all Git users on all platforms.

I’m the newest member of this team of Git contributors. I recently switched teams from working on the Git server for Visual Studio Team Services. As I was getting started in the Git codebase, I learned a lot from my colleagues who had already gone through this process. We started writing everything down into a guide on an internal wiki.

I thought it would be useful for others if we published this guide as documentation for setting up a development environment for Git on Windows and contributing those changes back upstream.

You can now find the document as in the Git for Windows repository. It includes sections on building the source, running tests, testing your changes in Linux, and preparing your commits for submission upstream.

Go Out There and Contribute!

The Git community is full of developers who are passionate about version control and making developers’ lives easier. You can be one of them! Hopefully this guide helps you along your way.

Special thanks to Jeff Hostetler, Ben Peart, Johannes Schindelin, and Kevin Willford who helped write the initial version of this guide, and the Git community for feedback that greatly improved the document.