From Git SCM Wiki
Revision as of 13:08, 4 September 2007 by (Talk)

Jump to: navigation, search

Currently GIT is fully-functional on Windows within a Cygwin environment. While this works well, there are several efforts that aim to provide a more native GIT on Windows.

These efforts are:

MinGW port

As it stands right now MinGW port is already very usable (even gitk works) but some functionality is still missing

Source code: MinGW-based recompilation ( <
> Installer: Packaged version will be available at msysGit's download page. Watch out for "WinGit".<
> For Developers: If you want to make changes/contribute install Git Development Environment for Windows<
> Report Issues: send email to MSysGit Discussions Group or report it here


  • EclipseIDE-based GIT client, based on a pure Java implementation of GIT's internals.
  • A libgit + cygwin.dll Windows Explorer extension (perhaps based on TortoiseSVN)

Ask on the MailingLists for the latest news on this ;-)

The MinGW-based binaries seems to need MinGW runtime

If you have the main development team on linux/unix, and peripheral developers or translators on Windows, consider using git-cvsserver to give those users read or read/write access to the GIT tree via the CVS protocol. Committers using git-cvsserver have some limits: they cannot branch, tag or merge. On the other hand, git-cvsserver works well with Eclipse, TortoiseCVS and other easy-to-use CVS clients.



Git is now a cygwin binary package, directly installable without needing to compile it. See CygwinBinaryInstall.

Otherwise, to be able to build git directly from source, you will need to install cygwin and the following packages:

  • tcltk (for gitk and git-gui)
  • perl
  • openssh
  • openssl (and -dev)
  • libiconv
  • zip (and -dev)
  • curl (and -dev), optional if compiled with NO_CURL=1
  • expat (and -dev), optional if compiled with NO_CURL=1
  • make
  • gcc
  • binutils (sorta necessary to compile!)
  • patchutils (at least for the tests)
  • cpio (at least for the tests)
  • xmlto to build the man pages
  • util-linux: just to have getopt (required by xmlto)
  • asciidoc to build documents (
  • python to build documents

With these packages installed download the git source package from the git homepage and then unpack it with:

tar xvzf git-x.y.z.tar.gz (or tar xvjf git-x.y.z.tar.bz2)

Then, build git and install it in your ~/bin directory by doing:

make install

If want to be extra careful, you can always run the regression tests:

make test

You are now ready to use GIT. Check that your path includes ~/bin and you are off!

Extra notes

  • Use git on local NTFS disks -- Network drives disks don't support the filesystem semantics GIT needs; for interoperability purposes you can store bare repositories on FAT32 disks.
  • Be careful with the case in filenames. Similarly, avoid special chars in filenames.
  • Run git gc early and often. There are slowdowns with many unpacked objects. Be careful to not create very big packfiles (bigger than 2 Gb).
  • Avoid using ActiveState Perl if possible. Ask in the MailingLists if you must.
  • Try to avoid interrupting (Ctrl-C) processes - it breaks cygwin.
  • Consider setting core.fileMode to false (git repo-config core.fileMode false) if file modes are frequently the only differences detected by Git. Many Windows applications make the execute bit be set in Cygwin when they save a file. Besides Cygwin detects file mode by stupid combination of content analysis, file name extension and moon phase.
  • Insert "set CYGWIN=tty binmode" after the first line of C:\cygwin\cygwin.bat, so you can use Ctrl-z in cygwin's bash to suspend a program.
  • Windows usually writes end-of-line as CRLF, while Unix/POSIX writes LF. This can cause a variety of problems. There are current efforts to address this.
  • Setup binary mode for cygwin (there is an option in cygwin's setup program), otherwise Cygwin mangles everything read and written (Git repos have binary files in control structures).
  • Avoid big repos.
  • Avoid big blobs (very big files. Basically anything larger than 10Mb is too big).
  • Avoid big trees (directories with many files in them).
  • Avoid deep hierarchies.
  • Reboot regularly (memory fragmentation)
  • Defragment often (filesystems fragmentation)
  • See related discussion thread: Windows support.


Personal tools