--- a/config.mak.uname
+++ b/config.mak.uname
@@ -244,6 +244,31 @@ ifeq ($(uname_O),Cygwin)
 	COMPAT_OBJS += compat/win32/path-utils.o
 	FREAD_READS_DIRECTORIES = UnfortunatelyYes
 endif
+ifeq ($(uname_O),Msys)
+	ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4)
+		NO_D_TYPE_IN_DIRENT = YesPlease
+		NO_STRCASESTR = YesPlease
+		NO_SYMLINK_HEAD = YesPlease
+		NO_IPV6 = YesPlease
+		OLD_ICONV = UnfortunatelyYes
+		# There are conflicting reports about this.
+		# On some boxes NO_MMAP is needed, and not so elsewhere.
+		# Try commenting this out if you suspect MMAP is more efficient
+		NO_MMAP = YesPlease
+	else
+		NO_REGEX = UnfortunatelyYes
+	endif
+	HAVE_ALLOCA_H = YesPlease
+	NEEDS_LIBICONV = YesPlease
+	NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes
+	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
+	X = .exe
+	UNRELIABLE_FSTAT = UnfortunatelyYes
+	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
+	MMAP_PREVENTS_DELETE = UnfortunatelyYes
+	COMPAT_OBJS += compat/win32/path-utils.o
+	FREAD_READS_DIRECTORIES = UnfortunatelyYes
+endif
 ifeq ($(uname_S),FreeBSD)
 	NEEDS_LIBICONV = YesPlease
 	# Versions up to 10.1 require OLD_ICONV; 10.2 and beyond don't.
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -3589,3 +3589,7 @@ ___git_complete gitk __gitk_main
 if [ "$OSTYPE" = cygwin ]; then
 	___git_complete git.exe __git_main
 fi
+
+if [ "$OSTYPE" = msys ]; then
+	___git_complete git.exe __git_main
+fi
