diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp
index 001664f2f20101b69dee91fd93da2898e5b7f05c..848fb293e9cfaa2019d60a3411f9d4b4a6c60746 100644
--- a/src/plugins/git/branchdialog.cpp
+++ b/src/plugins/git/branchdialog.cpp
@@ -303,7 +303,7 @@ void BranchDialog::rebase()
     const QString baseBranch = m_model->branchName(idx);
     GitClient *client = GitPlugin::instance()->gitClient();
     if (client->beginStashScope(m_repository, QLatin1String("rebase")))
-        client->synchronousRebase(m_repository, baseBranch);
+        client->rebase(m_repository, baseBranch);
 }
 
 QModelIndex BranchDialog::selectedIndex()
diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index f1d85b753e09929fa41662004142752b63e3876c..79db65edc829ae0122fc44bb8ecf991a349b8d81 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2350,21 +2350,10 @@ void GitClient::continuePreviousGitCommand(const QString &workingDirectory,
         synchronousAbortCommand(workingDirectory, gitCommand);
         break;
     default: // Continue/Skip
-        if (isRebase) {
-            // Git might request an editor, so this must be done asynchronously
-            // and without timeout
-            QStringList arguments;
-            arguments << gitCommand << QLatin1String(hasChanges ? "--continue" : "--skip");
-            outputWindow()->appendCommand(workingDirectory,
-                                          settings()->stringValue(GitSettings::binaryPathKey),
-                                          arguments);
-            VcsBase::Command *command = createCommand(workingDirectory, 0, true);
-            new ConflictHandler(command, workingDirectory, gitCommand);
-            command->addJob(arguments, -1);
-            command->execute();
-        } else {
+        if (isRebase)
+            rebase(workingDirectory, QLatin1String(hasChanges ? "--continue" : "--skip"));
+        else
             GitPlugin::instance()->startCommit();
-        }
     }
 }
 
@@ -2997,17 +2986,20 @@ bool GitClient::canRebase(const QString &workingDirectory) const
     return true;
 }
 
-bool GitClient::synchronousRebase(const QString &workingDirectory, const QString &baseBranch,
-                                  const QString &topicBranch)
+void GitClient::rebase(const QString &workingDirectory, const QString &baseBranch)
 {
-    QString command = QLatin1String("rebase");
+    // Git might request an editor, so this must be done asynchronously
+    // and without timeout
+    QString gitCommand = QLatin1String("rebase");
     QStringList arguments;
-
-    arguments << command << baseBranch;
-    if (!topicBranch.isEmpty())
-        arguments << topicBranch;
-
-    return executeAndHandleConflicts(workingDirectory, arguments, command);
+    arguments << gitCommand << baseBranch;
+    outputWindow()->appendCommand(workingDirectory,
+                                  settings()->stringValue(GitSettings::binaryPathKey),
+                                  arguments);
+    VcsBase::Command *command = createCommand(workingDirectory, 0, true);
+    new ConflictHandler(command, workingDirectory, gitCommand);
+    command->addJob(arguments, -1);
+    command->execute();
 }
 
 bool GitClient::synchronousRevert(const QString &workingDirectory, const QString &commit)
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index e6feb43866f4cfd2619887f3d865f3a7e5b99a61..cf0ead6c0de60960b1827193391bc8a726acc4e9 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -240,9 +240,7 @@ public:
     void push(const QString &workingDirectory, const QStringList &pushArgs = QStringList());
     bool synchronousMerge(const QString &workingDirectory, const QString &branch);
     bool canRebase(const QString &workingDirectory) const;
-    bool synchronousRebase(const QString &workingDirectory,
-                           const QString &baseBranch,
-                           const QString &topicBranch = QString());
+    void rebase(const QString &workingDirectory, const QString &baseBranch);
     bool synchronousRevert(const QString &workingDirectory, const QString &commit);
     bool synchronousCherryPick(const QString &workingDirectory, const QString &commit);
     void interactiveRebase(const QString &workingDirectory, const QString &commit, bool fixup);
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 6f051f9af3a01fa7ff0e4e4bf841265513dd3acb..65a0f91f2b05d3549f7ddc83bfa714fa2a25a470 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -1149,13 +1149,13 @@ void GitPlugin::continueOrAbortCommand()
     if (action == m_abortMergeAction)
         m_gitClient->synchronousMerge(state.topLevel(), QLatin1String("--abort"));
     else if (action == m_abortRebaseAction)
-        m_gitClient->synchronousRebase(state.topLevel(), QLatin1String("--abort"));
+        m_gitClient->rebase(state.topLevel(), QLatin1String("--abort"));
     else if (action == m_abortCherryPickAction)
         m_gitClient->synchronousCherryPick(state.topLevel(), QLatin1String("--abort"));
     else if (action == m_abortRevertAction)
         m_gitClient->synchronousRevert(state.topLevel(), QLatin1String("--abort"));
     else if (action == m_continueRebaseAction)
-        m_gitClient->synchronousRebase(state.topLevel(), QLatin1String("--continue"));
+        m_gitClient->rebase(state.topLevel(), QLatin1String("--continue"));
     else if (action == m_continueCherryPickAction)
         m_gitClient->synchronousCherryPick(state.topLevel(), QLatin1String("--continue"));
     else if (action == m_continueRevertAction)