diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,11 @@
 Changes
 =======
 
+Version 3.1.14
+--------------
+
+* Fix wrong interpretation of git diff exit codes (#21, thanks to croyzor)
+
 Version 3.1.13
 --------------
 
diff --git a/Test/Tasty/Silver/Interactive.hs b/Test/Tasty/Silver/Interactive.hs
--- a/Test/Tasty/Silver/Interactive.hs
+++ b/Test/Tasty/Silver/Interactive.hs
@@ -183,10 +183,11 @@
   if hasGit then
     withDiffEnv n tGold tAct
       (\fGold fAct -> do
-        ret <- PTL.readProcessWithExitCode "sh" ["-c", "git diff --no-index --text " ++ fGold ++ " " ++ fAct] T.empty
+        ret <- PTL.readProcessWithExitCode "sh" ["-c", "git diff --no-index --text --exit-code" ++ fGold ++ " " ++ fAct] T.empty
         case ret of
-          (ExitSuccess, stdOut, _) -> TIO.putStrLn stdOut
-          _ -> error ("Call to `git diff` failed: " ++ show ret)
+         (ExitSuccess, stdOut, _)   -> TIO.putStrLn stdOut
+         (ExitFailure 1, stdOut, _) -> TIO.putStrLn stdOut
+         ret@(ExitFailure _, _, _)  -> error ("Call to `git diff` failed: " ++ show ret)
       )
   else do
     putStrLn "`git diff` not available, cannot produce a diff."
diff --git a/tasty-silver.cabal b/tasty-silver.cabal
--- a/tasty-silver.cabal
+++ b/tasty-silver.cabal
@@ -1,5 +1,5 @@
 name:                tasty-silver
-version:             3.1.13
+version:             3.1.14
 synopsis:            A fancy test runner, including support for golden tests.
 description:
   This package provides a fancy test runner and support for «golden testing».
