diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,3 +1,7 @@
+## 0.1.0.3
+
+* Support for older Git versions [#5](https://github.com/fpco/stackage-update/issues/5)
+
 ## 0.1.0.1
 
 * README updates
diff --git a/Stackage/Update.hs b/Stackage/Update.hs
--- a/Stackage/Update.hs
+++ b/Stackage/Update.hs
@@ -4,16 +4,20 @@
     , defaultStackageUpdateSettings
     ) where
 
-import           Control.Exception      (IOException, try)
-import           Control.Monad          (when)
-import           System.Directory       (createDirectoryIfMissing,
-                                         doesDirectoryExist, findExecutable,
-                                         getAppUserDataDirectory, removeFile)
-import           System.Exit            (ExitCode (ExitSuccess), exitWith)
-import           System.FilePath        ((<.>), (</>))
-import           System.Process         (createProcess, cwd, proc,
-                                         waitForProcess)
-import System.IO (hPutStrLn, stderr)
+import           Control.Exception            (IOException, try)
+import           Control.Monad                (when)
+import           Data.Version                 (Version, parseVersion)
+import           System.Directory             (createDirectoryIfMissing,
+                                               doesDirectoryExist,
+                                               findExecutable,
+                                               getAppUserDataDirectory,
+                                               removeFile)
+import           System.Exit                  (ExitCode (ExitSuccess), exitWith)
+import           System.FilePath              ((<.>), (</>))
+import           System.IO                    (hPutStrLn, stderr)
+import           System.Process               (createProcess, cwd, proc,
+                                               readProcess, waitForProcess)
+import           Text.ParserCombinators.ReadP (readP_to_S)
 
 -- | Settings for controlling the update process.
 --
@@ -28,6 +32,13 @@
 defaultStackageUpdateSettings :: StackageUpdateSettings
 defaultStackageUpdateSettings = StackageUpdateSettings
 
+-- | Since internal representation of Version will change in the future.
+version19 :: Version
+version19 =
+    case map fst $ filter (null . snd) $ readP_to_S parseVersion "1.9" of
+        x:_ -> x
+        [] -> error "Couldn't parse 1.9 as a version"
+
 -- | Perform an update from the Git repository
 stackageUpdate :: StackageUpdateSettings -> IO ()
 stackageUpdate StackageUpdateSettings = do
@@ -37,17 +48,35 @@
             Just git -> return git
             Nothing -> error "Please install git and provide the executable on your PATH"
 
+    -- Check for support of the no-single-branch option
+    -- https://github.com/fpco/stackage-update/issues/5
+    fullVer <- readProcess git ["--version"] ""
+    let hasNSB =
+            case reverse $ words fullVer of
+                ver:_ ->
+                    case map fst $ filter (null . snd) $ readP_to_S parseVersion ver of
+                        ver':_ -> ver' >= version19
+                        [] -> False
+                [] -> False
+        cloneArgs =
+            "clone" : "https://github.com/commercialhaskell/all-cabal-files.git" : rest
+          where
+            rest
+                | hasNSB =
+                    [ "-b", "display" -- avoid checking out a lot of files
+                    , "--depth", "1"
+                    , "--no-single-branch"
+                    ]
+                | otherwise =
+                    [ "-b", "hackage"
+                    ]
+
     suDir <- getAppUserDataDirectory "stackage-update"
     let acfDir = suDir </> "all-cabal-files"
     repoExists <- doesDirectoryExist acfDir
     if repoExists
         then runIn suDir acfDir "git" ["fetch"]
-        else runIn suDir suDir "git"
-            [ "clone", "https://github.com/commercialhaskell/all-cabal-files.git"
-            , "-b", "display" -- avoid checking out a lot of files
-            , "--depth", "1"
-            , "--no-single-branch"
-            ]
+        else runIn suDir suDir "git" cloneArgs
 
     cabalDir <- getAppUserDataDirectory "cabal"
     let hackageDir = cabalDir </> "packages" </> "hackage.haskell.org"
diff --git a/stackage-update.cabal b/stackage-update.cabal
--- a/stackage-update.cabal
+++ b/stackage-update.cabal
@@ -1,5 +1,5 @@
 name:                stackage-update
-version:             0.1.0.2
+version:             0.1.0.3
 synopsis:            Update your package index incrementally (requires git)
 homepage:            https://github.com/fpco/stackage-update
 license:             MIT
