92

What is the difference between git-scm (downloaded from git-scm.com) and msysGit (hosted on Google Code, Github, and probably others)? They both seem pretty similar, and even though I have git-scm, I have applied fixes specified for msysGit and they seem to work fine.

Also, which one, if either, is Git for Windows, and are both called Git Bash, or do both have the Git Bash shell, or only one of the two?

poke
  • 369,085
  • 72
  • 557
  • 602
trysis
  • 8,086
  • 17
  • 51
  • 80
  • 1
    See also http://stackoverflow.com/q/11849737/405017 and http://stackoverflow.com/q/3672272/405017 and http://superuser.com/q/742536 – Phrogz Apr 30 '15 at 15:28
  • What is the difference between website1: https://git-for-windows.github.io/ and website2: https://git-scm.com ? Both provide binaries of Git for Windows. – joedotnot Mar 05 '17 at 00:25
  • 1
    Just wanted to mention that as of this writing, http://gitforwindows.org/ and https://git-scm.com/downloads both point to the same downloadable binaries, and https://github.com/git-for-windows/git is the official repository in either case. The gitforwindows.org site seems like the official "face" of Git for Windows; rest assured it's not some "separate but deceptively similar" project. It's literally the same software. – John Y Jan 12 '18 at 16:39

1 Answers1

154

The website git-scm.com is the official website for Git, the version control software. There is no “Git-SCM”, that’s just the URL of the source control management (SCM) software—the name is just Git. Originally written for Linux, the original Git software is only available as a source that doesn’t compile easily on Windows.

If you are just interested in installing Git on Windows, then you can stop reading here and just download a Windows build from the official website.

Git for Windows

Git for Windows is the project dedicated to building native builds of Git for Windows. The Windows releases are available for download on the official Git website, they come as 32-bit and 64-bit builds.

Git for Windows is built on top of MSYS2 (a part of MinGW) which provides a minimal unix-like shell environment which is used to run all the components of Git which are not written in native code (a lot of Git is written as shell scripts). In order to build Git with MSYS2, the project group has a special “Git for Windows SDK” which is basically the whole build environment needed to build Git on Windows, and comes with everything you need to start working on Git itself.

The project maintains its own fork of Git which is kept up to date with the original Git project but contains a set of patches necessary to build it on Windows. Git for Windows releases are usually released with a short delay after the official version is released (although versions are sometimes skipped).

msysGit

Prior to Git version 2, the Git for Windows binaries were released by the project called msysGit, which is the predecessor of the Git for Windows project. The project was retired on August 18, 2015 in favor to launch the Git for Windows project with the rebuilt Git for Windows SDK development environment. The new project was mostly started with the same team.

While many people thought of msysGit as the name of the Git binaries, that was actually the name of the development environment they created. It was based on MSYS, the older and kind-of outdated version before MSYS2 was started fresh. The bad state of MSYS was one of the reasons why the Git for Windows project was started with a completely revamped build environment.

The project essentially released three things: msysGit, Git for Windows, and a portable Git for Windows. The msysGit installer would install and set up the development environment required to build Git on Windows, just like the Git for Windows SDK does now. Git for Windows was an installer that would install Git on a Windows machine, and the portable Git for Windows were just the binaries you wouldn’t have to install. Note that all their releases were released as “preview” builds, meaning that they would not be fully supported releases. Despite that, the project was very mature and the releases were very stable and the de-facto best way to set up Git on Windows.

Git Bash

As mentioned above, a lot of Git is written as shell scripts. In order to execute those scripts, Git for Windows uses Bash that comes bundled with MSYS2 (so Bash works as an interpreter for it).

Git Bash commonly refers to the shortcut the Git for Windows installer creates. It launches a full featured console window running Bash, so you can use Git as well as a set of common command line tools or Unix programs (like less, awk, grep, or even the text editor vim). Especially for less experienced users, Git Bash is the common way to interact with Git, although you could easily use it from more Windows-centric environments like PowerShell.

Starting with Git version 2, Git Bash will by default launch in MinTTY, a terminal emulator which comes with MSYS2, making it easily usable even for users not accustomed to a console experience.

It’s also useful to know that Git Bash will always work even if you decided not to add any Git executables to your PATH during the setup of Git for Windows. However, my personal recommendation is to add the Git executable (just the Git executable, choosing the option “Use Git from the Windows Command Prompt” during setup) to the PATH. That way, you can work with Git from other shells (cmd.exe or PowerShell), and other programs can access it too (e.g. many libraries or even IDE integrations expect a Git executable in the PATH to interact with Git repositories).

poke
  • 369,085
  • 72
  • 557
  • 602
  • 3
    Thank you! I could not find this ANYWHERE on the web, and believe me, I've searched many times. There were bits and pieces, but nothing nearly as comprehensive as this. – trysis Mar 10 '14 at 20:36
  • So pretty much `msysGit` is the binaries/.exe's, etc. and `git-scm` is the final product? – trysis Mar 10 '14 at 20:42
  • 2
    msysGit is the build environment to build the final product, “Git for Windows”, which is just that (Git, but for Windows), yeah. And “git-scm” is just the crappy domain name :P – poke Mar 10 '14 at 20:46
  • Are there any performance differences when compiling yourself vs. getting it from `git-scm`? & yeah, that is pretty bad, what in the heck does `scm` even stand for? – trysis Mar 10 '14 at 20:54
  • If you compile it yourself with msysGit, you will get the same final product as you will get when you just download the completed thing. And unfortunately, there isn’t anything better than msysGit for Windows; it is a bit slower than on Windows, but it’s fully compatible to the “original” Git (on Linux), so that’s the best thing you can get. And the “scm” stands from “source control management” which is another word for “version control software”. – poke Mar 10 '14 at 20:57
  • 3
    @trysis, one more historic fact: Git for Windows, when in its infancy and puberty, was called msysGit, and many early adopters knew it by this name, and it stuck. Later, the developers of this Windows port decided to change the name of the binary installer built using msysGit to Git for Windows and reserve the name "msysGit" only for the Git for Windows development environment. This definitely adds to the confusion as you're perfectly able to find on the web usage of the name "msysGit" denoting Git for Windows. – kostix Mar 11 '14 at 08:28
  • @trysis, one more fact: neither Git nor Git for Windows are projects backed by enterprises so they really have no "official packages" of the software and the like. The `git-scm.com` is a site (run by one of the folks behind github, IIRC) which is a convenient place to keep pointers to the source code, documentation and tutorials, and even provide downloads (which are only useful for Windows and Mac OS X anyway). – kostix Mar 11 '14 at 08:31
  • @kostix Git is “officially backed” by the kernel community, that gives them a lot of reliability already. Companies like GitHub being behind it adds a lot to that too. git-scm.com is considered the primary website for Git and is also considered so by the maintainers of Git. – poke Mar 11 '14 at 12:50
  • @poke, very true, but I maintain an impression the OP thinks there's Git and there's "Git-SCM" as a separate product, possibly pushed forward by some enterprise (the `.com` TLD adds to the confusion; also note there are comercial products using the word "Git" in their names--"Smart Git" is one example; as a bonus the OP was unaware of what does "SCM" stand for). Hence I tried to show this assumption is unfounded--no more, no less. – kostix Mar 11 '14 at 15:11
  • @kostix Honestly, I wasn't even thinking about whether the 2 were made by the same people, but I assumed they were. I know both are created by "regular people" like you or me, not companies, although the polish suggested they were at least related to a big, corporate entity. – trysis Mar 11 '14 at 15:38
  • 1
    @poke I think, "scm" stands for "software configuration management" (http://en.wikipedia.org/wiki/Software_configuration_management). – Tilman Vogel Sep 11 '14 at 12:31
  • **Update** msysgit and "Git for Windows" have now merged names. See [stackoverflow.com/a/30181774/1224158](http://stackoverflow.com/a/30181774/1224158) – Bryan P May 12 '15 at 04:30
  • Both are same now and even git-scm has binary for Wndows(32, 64-bit).https://git-scm.com/download/win – Ravi Parekh Oct 22 '15 at 07:57
  • @RaviParekh You’re right, I meant to update this answer for a while. Thanks for the indirect reminder; will do that later :) – poke Oct 22 '15 at 09:45