diff --git a/src/plugins/git/commitdata.cpp b/src/plugins/git/commitdata.cpp
index 5796198fa6d94ca8d974791966e943e8b11933f4..b31a260d653856b83d41c35cff8d4ddf0d4573af 100644
--- a/src/plugins/git/commitdata.cpp
+++ b/src/plugins/git/commitdata.cpp
@@ -108,6 +108,15 @@ static FileStates stateFor(const QChar &c)
     }
 }
 
+bool operator<(const CommitData::StateFilePair &a, const CommitData::StateFilePair &b)
+{
+    if ((a.first & UnmergedFile) && !(b.first & UnmergedFile))
+        return false;
+    if ((b.first & UnmergedFile) && !(a.first & UnmergedFile))
+        return true;
+    return a.second < b.second;
+}
+
 bool CommitData::checkLine(const QString &stateInfo, const QString &file)
 {
     QTC_ASSERT(stateInfo.count() == 2, return false);
@@ -147,6 +156,7 @@ bool CommitData::checkLine(const QString &stateInfo, const QString &file)
             files.append(qMakePair(yState, newFile));
         }
     }
+    qSort(files);
     return true;
 }
 
diff --git a/src/plugins/git/commitdata.h b/src/plugins/git/commitdata.h
index 8be3ad3993e8bc309a8034ad379d35f474679a54..40fb452313cd9927edaca64e385b705afec6a69c 100644
--- a/src/plugins/git/commitdata.h
+++ b/src/plugins/git/commitdata.h
@@ -109,6 +109,8 @@ private:
     bool checkLine(const QString &stateInfo, const QString &file);
 };
 
+bool operator<(const CommitData::StateFilePair &a, const CommitData::StateFilePair &b);
+
 } // namespace Internal
 } // namespace Git