diff --git a/modules/git/functions/git-info b/modules/git/functions/git-info
index eca50462..fefb6139 100644
--- a/modules/git/functions/git-info
+++ b/modules/git/functions/git-info
@@ -149,6 +149,9 @@ function git-info {
   local dirty=0
   local dirty_format
   local dirty_formatted
+  local error=0
+  local error_format
+  local error_formatted
   local ignore_submodules
   local indexed=0
   local indexed_format
@@ -361,6 +364,7 @@ function git-info {
   else
     # Use porcelain status for easy parsing.
     status_cmd="command git status --porcelain --ignore-submodules=${ignore_submodules:-none}"
+    ${(z)status_cmd} &> /dev/null || error=1
 
     # Get current status.
     while IFS=$'\n' read line; do
@@ -426,6 +430,12 @@ function git-info {
     zstyle -s ':prezto:module:git:info:clean' format 'clean_formatted'
   fi
 
+  # Format error.
+  if (( error > 0 )); then
+    zstyle -s ':prezto:module:git:info:error' format 'error_format'
+    zformat -f error_formatted "$error_format" "E:$error"
+  fi
+
   # Format info.
   zstyle -a ':prezto:module:git:info:keys' format 'info_formats'
   for info_format in ${(k)info_formats}; do
@@ -438,6 +448,7 @@ function git-info {
       "c:$commit_formatted" \
       "d:$deleted_formatted" \
       "D:$dirty_formatted" \
+      "E:$error_formatted" \
       "i:$indexed_formatted" \
       "I:$unindexed_formatted" \
       "m:$modified_formatted" \