diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 48fde2be1e12b5ffd758d7acfc3cb72f66d3a13c..0e8f5af0ed8cb3c3ab18cecf668813f19a5baca1 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2132,10 +2132,10 @@ bool GitClient::synchronousPull(const QString &workingDirectory, bool rebase)
     return executeAndHandleConflicts(workingDirectory, arguments, abortCommand);
 }
 
-bool GitClient::synchronousCommandContinue(const QString &workingDirectory, const QString &command)
+bool GitClient::synchronousCommandContinue(const QString &workingDirectory, const QString &command, bool hasChanges)
 {
     QStringList arguments;
-    arguments << command << QLatin1String("--continue");
+    arguments << command << QLatin1String(hasChanges ? "--continue" : "--skip");
     return executeAndHandleConflicts(workingDirectory, arguments, command);
 }
 
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 956fcb460bccca4a1767db165807c8bbeaea18a7..66be621f2a25bb2f20c95d7effba7daf02b50b62 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -198,7 +198,7 @@ public:
     QString vcsGetRepositoryURL(const QString &directory);
     bool synchronousFetch(const QString &workingDirectory, const QString &remote);
     bool synchronousPull(const QString &workingDirectory, bool rebase);
-    bool synchronousCommandContinue(const QString &workingDirectory, const QString &command);
+    bool synchronousCommandContinue(const QString &workingDirectory, const QString &command, bool hasChanges);
     bool synchronousPush(const QString &workingDirectory, const QString &remote = QString());
     bool synchronousMerge(const QString &workingDirectory, const QString &branch);
     bool synchronousRebase(const QString &workingDirectory,
diff --git a/src/plugins/git/mergetool.cpp b/src/plugins/git/mergetool.cpp
index 45bec25742bb89b13ccf433752a2cb8c0f945f8d..c44bbfe4f97905ddb60e41eed1c66a21d717203e 100644
--- a/src/plugins/git/mergetool.cpp
+++ b/src/plugins/git/mergetool.cpp
@@ -255,26 +255,31 @@ void MergeTool::readData()
     }
 }
 
-void MergeTool::continuePreviousGitCommand(const QString &msgBoxTitle, const QString &msgBoxText,
+void MergeTool::continuePreviousGitCommand(const QString &msgBoxTitle, QString msgBoxText,
                                            const QString &buttonName, const QString &gitCommand)
 {
     QString workingDirectory = m_process->workingDirectory();
-    QMessageBox msgBox;
-    QPushButton *commandButton = msgBox.addButton(buttonName,  QMessageBox::AcceptRole);
-    QPushButton *abortButton = msgBox.addButton(QMessageBox::Abort);
+    bool isRebase = gitCommand == QLatin1String("rebase");
+    bool hasChanges = m_gitClient->gitStatus(m_process->workingDirectory(),
+            StatusMode(NoUntracked | NoSubmodules)) == GitClient::StatusChanged;
+    if (!hasChanges)
+        msgBoxText.prepend(tr("No changes found. "));
+    QMessageBox msgBox(QMessageBox::Question, msgBoxTitle, msgBoxText);
+    if (hasChanges || isRebase)
+        msgBox.addButton(hasChanges ? buttonName : tr("Skip"), QMessageBox::AcceptRole);
+    msgBox.addButton(QMessageBox::Abort);
     msgBox.addButton(QMessageBox::Ignore);
-    msgBox.setIcon(QMessageBox::Question);
-    msgBox.setWindowTitle(msgBoxTitle);
-    msgBox.setText(msgBoxText);
-    msgBox.exec();
-
-    if (msgBox.clickedButton() == commandButton) {      // Continue
-        if (gitCommand == QLatin1String("rebase"))
-            m_gitClient->synchronousCommandContinue(workingDirectory, gitCommand);
+    switch (msgBox.exec()) {
+    case QMessageBox::Ignore:
+        break;
+    case QMessageBox::Abort:
+        m_gitClient->synchronousAbortCommand(workingDirectory, gitCommand);
+        break;
+    default: // Continue/Skip
+        if (isRebase)
+            m_gitClient->synchronousCommandContinue(workingDirectory, gitCommand, hasChanges);
         else
             GitPlugin::instance()->startCommit();
-    } else if (msgBox.clickedButton() == abortButton) { // Abort
-        m_gitClient->synchronousAbortCommand(workingDirectory, gitCommand);
     }
 }
 
diff --git a/src/plugins/git/mergetool.h b/src/plugins/git/mergetool.h
index edb5658cc49a487d9d88ed2a24b4734ea60395e8..093b7ab4c9b18082f174ddd69e333b857c87566a 100644
--- a/src/plugins/git/mergetool.h
+++ b/src/plugins/git/mergetool.h
@@ -78,7 +78,7 @@ private:
     QString stateName(FileState state, const QString &extraInfo);
     void chooseAction();
     void addButton(QMessageBox *msgBox, const QString &text, char key);
-    void continuePreviousGitCommand(const QString &msgBoxTitle, const QString &msgBoxText,
+    void continuePreviousGitCommand(const QString &msgBoxTitle, QString msgBoxText,
                                     const QString &buttonName, const QString &gitCommand);
 
     MergeToolProcess *m_process;