diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index b496734f3408d46cd9e1ac17a0bdd168696743b4..82ff778431a435a4cc80e6893043f887fe85ecd8 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -869,10 +869,10 @@ bool GitClient::synchronousCheckout(const QString &workingDirectory,
     return true;
 }
 
-void GitClient::hardReset(const QString &workingDirectory, const QString &commit)
+void GitClient::reset(const QString &workingDirectory, const QString &argument, const QString &commit)
 {
     QStringList arguments;
-    arguments << QLatin1String("reset") << QLatin1String("--hard");
+    arguments << QLatin1String("reset") << argument;
     if (!commit.isEmpty())
         arguments << commit;
 
@@ -880,18 +880,6 @@ void GitClient::hardReset(const QString &workingDirectory, const QString &commit
     connectRepositoryChanged(workingDirectory, cmd);
 }
 
-void GitClient::softReset(const QString &workingDirectory, const QString &commit)
-{
-    if (commit.isEmpty())
-        return;
-
-    QStringList arguments;
-    arguments << QLatin1String("reset") << QLatin1String("--soft") << commit;
-
-    VcsBase::Command *cmd = executeGit(workingDirectory, arguments, 0, true);
-    connectRepositoryChanged(workingDirectory, cmd);
-}
-
 void GitClient::addFile(const QString &workingDirectory, const QString &fileName)
 {
     QStringList arguments;
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 5cacc82f143f3b6cf3523f40f66f5f57026780cb..565960ec2d7312254f88ecd4342150ea122e34c2 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -137,8 +137,7 @@ public:
              bool enableAnnotationContextMenu = false, const QStringList &args = QStringList());
     void blame(const QString &workingDirectory, const QStringList &args, const QString &fileName,
                const QString &revision = QString(), int lineNumber = -1);
-    void hardReset(const QString &workingDirectory, const QString &commit = QString());
-    void softReset(const QString &workingDirectory, const QString &commit);
+    void reset(const QString &workingDirectory, const QString &argument, const QString &commit = QString());
     void addFile(const QString &workingDirectory, const QString &fileName);
     bool synchronousLog(const QString &workingDirectory,
                         const QStringList &arguments,
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index 3dce0b7cf042b7afd41777e732003cf6be210996..f80b661a6b011e89402171a740d03616d587752b 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -708,14 +708,7 @@ void GitPlugin::resetRepository()
     LogChangeDialog dialog(true);
     dialog.setWindowTitle(tr("Undo Changes to %1").arg(QDir::toNativeSeparators(topLevel)));
     if (dialog.runDialog(topLevel))
-        switch (dialog.resetType()) {
-        case HardReset:
-            m_gitClient->hardReset(topLevel, dialog.commit());
-            break;
-        case SoftReset:
-            m_gitClient->softReset(topLevel, dialog.commit());
-            break;
-        }
+        m_gitClient->reset(topLevel, dialog.resetFlag(), dialog.commit());
 }
 
 void GitPlugin::startRebase()
diff --git a/src/plugins/git/logchangedialog.cpp b/src/plugins/git/logchangedialog.cpp
index 28a3e44d8ffb2981d5a454ccead9717b29d36d4b..b8074707d51445e5dc9d03cbae2e4d288393a242 100644
--- a/src/plugins/git/logchangedialog.cpp
+++ b/src/plugins/git/logchangedialog.cpp
@@ -72,8 +72,8 @@ LogChangeDialog::LogChangeDialog(bool isReset, QWidget *parent)
     if (isReset) {
         popUpLayout->addWidget(new QLabel(tr("Reset type:"), this));
         m_resetTypeComboBox = new QComboBox(this);
-        m_resetTypeComboBox->addItem(tr("Hard Reset"), HardReset);
-        m_resetTypeComboBox->addItem(tr("Soft Reset"), SoftReset);
+        m_resetTypeComboBox->addItem(tr("Hard"), QLatin1String("--hard"));
+        m_resetTypeComboBox->addItem(tr("Soft"), QLatin1String("--soft"));
         popUpLayout->addWidget(m_resetTypeComboBox);
         popUpLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
     }
@@ -112,11 +112,11 @@ QString LogChangeDialog::commit() const
     return QString();
 }
 
-ResetType LogChangeDialog::resetType() const
+QString LogChangeDialog::resetFlag() const
 {
     if (!m_resetTypeComboBox)
-        return HardReset;
-    return static_cast<ResetType>(m_resetTypeComboBox->itemData(m_resetTypeComboBox->currentIndex()).toInt());
+        return QString();
+    return m_resetTypeComboBox->itemData(m_resetTypeComboBox->currentIndex()).toString();
 }
 
 bool LogChangeDialog::populateLog(const QString &repository)
diff --git a/src/plugins/git/logchangedialog.h b/src/plugins/git/logchangedialog.h
index 78f61f9cfc9d0d902698736588f11743f3ab030e..f0b3b1267be17056945c617518bd73f4cb37f035 100644
--- a/src/plugins/git/logchangedialog.h
+++ b/src/plugins/git/logchangedialog.h
@@ -44,13 +44,7 @@ namespace Git {
 namespace Internal {
 
 // A dialog that lists SHA1 and subject of the changes
-// for reset --hard and --soft.
-
-enum ResetType {
-    HardReset,
-    SoftReset
-};
-
+// Used for reset and interactive rebased
 class LogChangeDialog : public QDialog
 {
     Q_OBJECT
@@ -60,7 +54,7 @@ public:
     bool runDialog(const QString &repository);
 
     QString commit() const;
-    ResetType resetType() const;
+    QString resetFlag() const;
 
 private:
     bool populateLog(const QString &repository);