diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp
index fb7092c7b861ad6e7b1b1a8799ee26ab9c99f079..cc7c91b1fadd03db3966505045b6017abdf85626 100644
--- a/src/plugins/git/commitdata.cpp
+++ b/src/plugins/git/commitdata.cpp
@@ -90,7 +90,7 @@ static FileStates stateFor(const QChar &c)
 {
     switch (c.unicode()) {
     case ' ':
-        return UntrackedFile;
+        return EmptyFileState;
     case 'M':
         return ModifiedFile;
     case 'A':
@@ -103,6 +103,8 @@ static FileStates stateFor(const QChar &c)
         return CopiedFile;
     case 'U':
         return UnmergedFile;
+    case '?':
+        return UntrackedFile;
     default:
         return UnknownFileState;
     }
@@ -144,11 +146,10 @@ bool CommitData::checkLine(const QString &stateInfo, const QString &file)
             files.append(qMakePair(xState | UnmergedFile | UnmergedUs, file));
         }
     } else {
-        xState |= StagedFile;
-        if (xState != StagedFile)
-            files.append(qMakePair(xState, file));
+        if (xState != EmptyFileState)
+            files.append(qMakePair(xState | StagedFile, file));
 
-        if (yState != UntrackedFile) {
+        if (yState != EmptyFileState) {
             QString newFile = file;
             if (xState & (RenamedFile | CopiedFile))
                 newFile = file.mid(file.indexOf(QLatin1String(" -> ")) + 4);
diff --git a/src/plugins/git/commitdata.h b/src/plugins/git/commitdata.h
index 40faabe4fad159539d01e88d012fe27a027b4c29..746d5d259ad14c5ce843125c85a24cc875b5b75a 100644
--- a/src/plugins/git/commitdata.h
+++ b/src/plugins/git/commitdata.h
@@ -64,7 +64,7 @@ struct GitSubmitEditorPanelData
 QDebug operator<<(QDebug d, const GitSubmitEditorPanelData &);
 
 enum FileState {
-    UntrackedFile = 0,
+    EmptyFileState = 0x00,
 
     StagedFile   = 0x01,
     ModifiedFile = 0x02,
@@ -77,6 +77,7 @@ enum FileState {
     UnmergedUs   = 0x100,
     UnmergedThem = 0x200,
 
+    UntrackedFile = 0x400,
     UnknownFileState = 0x800
 };
 Q_DECLARE_FLAGS(FileStates, FileState)
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 730854ab17914974a1b5b7f70a0235fcd09bd945..82637b7b1fa6ff0dcbc97270c6e88ed0db179077 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -1804,7 +1804,8 @@ bool GitClient::getCommitData(const QString &workingDirectory,
     //    MM filename
     //     A new_unstaged_file
     //    R  old -> new
-    //    ?? missing_file
+    //     D deleted_file
+    //    ?? untracked_file
     if (status != StatusUnchanged) {
         if (!commitData->parseFilesFromStatus(output)) {
             *errorMessage = msgParseFilesFailed();