diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 2c3db974d080fdbfba934ff29de4605042450a1a..dffc01b2875d40c54b718454d258dfb7f6d85c11 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -3155,7 +3155,11 @@ void GitClient::rebase(const QString &workingDirectory, const QString &baseBranc
 bool GitClient::synchronousRevert(const QString &workingDirectory, const QString &commit)
 {
     QStringList arguments;
-    QString command = QLatin1String("revert");
+    const QString command = QLatin1String("revert");
+    // Do not stash if --continue or --abort is given as the commit
+    if (!commit.startsWith(QLatin1Char('-')) && !beginStashScope(workingDirectory, command))
+        return false;
+
     arguments << command << QLatin1String("--no-edit") << commit;
 
     return executeAndHandleConflicts(workingDirectory, arguments, command);
@@ -3164,7 +3168,11 @@ bool GitClient::synchronousRevert(const QString &workingDirectory, const QString
 bool GitClient::synchronousCherryPick(const QString &workingDirectory, const QString &commit)
 {
     QStringList arguments;
-    QString command = QLatin1String("cherry-pick");
+    const QString command = QLatin1String("cherry-pick");
+    // Do not stash if --continue or --abort is given as the commit
+    if (!commit.startsWith(QLatin1Char('-')) && !beginStashScope(workingDirectory, command))
+        return false;
+
     arguments << command << commit;
 
     return executeAndHandleConflicts(workingDirectory, arguments, command);
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 917a47a39ce05241dd2f5f135aa25886125462a9..450a0ddf94cd60170e9f8989a1d8887d2f9fa257 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -857,28 +857,23 @@ void GitPlugin::startChangeRelatedAction()
 
     if (!ensureAllDocumentsSaved())
         return;
-    QString command;
     bool (GitClient::*commandFunction)(const QString&, const QString&);
     switch (dialog.command()) {
     case CherryPick:
-        command = QLatin1String("Cherry-pick");
         commandFunction = &GitClient::synchronousCherryPick;
         break;
     case Revert:
-        command = QLatin1String("Revert");
         commandFunction = &GitClient::synchronousRevert;
         break;
     case Checkout:
-        command =  QLatin1String("Checkout");
+        if (!m_gitClient->beginStashScope(workingDirectory, QLatin1String("Checkout")))
+            return;
         commandFunction = &GitClient::synchronousCheckout;
         break;
     default:
         return;
     }
 
-    if (!m_gitClient->beginStashScope(workingDirectory, command))
-        return;
-
     (m_gitClient->*commandFunction)(workingDirectory, change);
 }