I get asked from time to time what tools I would install to use Git on Windows. I randomly spout off a list that looks something like this. In time, this list grew to something bigger than just a list. It seems natural for it to evolve into a post. In no particular order, here are installers for getting Git running on both/either client and server. (Granted, the philosophical discussion of “client” and “server” are not technically relevant in distributed source control systems as everything is technically both, but it’s good to designate one of the “clients” as a “server” by policy so there’s a “canonical truth” all can go to for the latest official copy.)
- mSysGit (http://code.google.com/p/msysgit/) is the base engine, and is needed to do anything git related. Most other tools presume this is installed. The CygWin route is a trap. I install with these options:
– Run Git from the Windows Command Prompt (middle option)
– Checkout Windows-style, commit Unix-style
– Use OpenSSH (unless you’ve previously installed Putty, you don’t need it for Git with this option)
- Git Extensions (http://code.google.com/p/gitextensions/) is GUI tools for both Explorer and Visual Studio (and Eclipse and a few other things). Includes kdiff3, a diff tool for Windows. Ensure you choose the same options you did for mSysGit. (Note that by default mSysGit says “OpenSSH” and Git Extensions says “TortoisePlink”.)
- git-flow (https://github.com/nvie/gitflow/wiki/Windows) is a great workflow for git
- TortoiseGit provides icon overlays in Windows Explorer but their commit dialog “simplifies” the difference between push and commit making it absolutely useless aside from the icon overlays
- Git Source Control Provider (http://gitscc.codeplex.com/) provides icon overlays in Visual Studio
- SmartGit (http://www.syntevo.com/smartgit/index.html): “smartgit” is also a protocol, making this a confusing name, client also does hg and svn
- GitHub for Windows: “simplifies” git for Windows users — that sounds like the buzz word for “doesn’t quite do it right”, I have no experience with it.
file urls (not preferred, only works on a lan, e.g. \serverfoldergitrepo):
- share the git repository on a file share
http(s):// protocol (pick one):
- (prefered) WebGit.NET (https://github.com/otac0n/WebGitNet/wiki/Getting-Started)
- Azure’s http git server (https://github.com/projectkudu/kudu/): If only I had another 854 hours in the day, I’d get this running and make it the preferred mechanism. It is the newest and best supported of the bunch.
- Bonobo (http://www.chodounsky.net/bonobo-git-server/): It’s abandon-ware and didn’t have many features.
- GitWebAccess (http://gitweb.codeplex.com/): The website is great for configuring http access to git, but the admin interface has no authentication. Thus anyone with a web browser can reconfigure my server. Oops.
- GitStack (http://gitstack.com/): It runs on Apache, the rest of these run on IIS. Granted one can proxy Apache behind IIS: http://blog.endjin.com/2010/11/a-step-by-step-guide-to-hosting-teamcity-in-iis-7/.
git:// protocol (basically ssh://):
Guides: (follow them all — more-or-less)
- expose mSysGit over CopSSH daemon
- GitExtensions and Putty aren’t needed server-side, but may make debugging easier
- CopSSH is OpenSSHD compiled for Windows, doesn’t need cygwin, daemon is built-in, can be configured for user/pass or preshared keys
- point this to the same Git repositories hosted in http(s) above and now it works both ways
http://windowsgit.com/ does this setup for you, purchase for 14 euro, docs are very thin, probably better to do it yourself to learn more about what’s going on under the hood.
alternatives / hosted providers:
Most of these providers host open-source projects for free, and closed-source projects for a price, and include both https:// and git://
- GitHub (https://github.com/)
- Pretty much any source code hosting provider