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:
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 (http://repo.or.cz/w/git/mingw.git) <
> 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)
- openssl (and -dev)
- zip (and -dev)
- curl (and -dev), optional if compiled with NO_CURL=1
- expat (and -dev), optional if compiled with NO_CURL=1
- binutils (sorta necessary to compile!)
- patchutils (at least for the t4109-apply-multifrag.sh tests)
- cpio (at least for the t5400-send-pack.sh tests)
- xmlto to build the man pages
- util-linux: just to have getopt (required by xmlto)
- asciidoc to build documents (http://www.methods.co.nz/asciidoc/INSTALL.html)
- 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:
If want to be extra careful, you can always run the regression tests:
You are now ready to use GIT. Check that your path includes ~/bin and you are off!
- 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.