diff --git a/src/plugins/git/branchdialog.cpp b/src/plugins/git/branchdialog.cpp
index 7a86cd3ec146253feb535e0d19a7eb7ea2c3a72e..a18c9a0d397c1aff3694b33c4038f591af39f618 100644
--- a/src/plugins/git/branchdialog.cpp
+++ b/src/plugins/git/branchdialog.cpp
@@ -71,6 +71,7 @@ BranchDialog::BranchDialog(QWidget *parent) :
     connect(m_ui->renameButton, SIGNAL(clicked()), this, SLOT(rename()));
     connect(m_ui->diffButton, SIGNAL(clicked()), this, SLOT(diff()));
     connect(m_ui->logButton, SIGNAL(clicked()), this, SLOT(log()));
+    connect(m_ui->resetButton, SIGNAL(clicked()), this, SLOT(reset()));
     connect(m_ui->mergeButton, SIGNAL(clicked()), this, SLOT(merge()));
     connect(m_ui->rebaseButton, SIGNAL(clicked()), this, SLOT(rebase()));
     connect(m_ui->cherryPickButton, SIGNAL(clicked()), this, SLOT(cherryPick()));
@@ -320,6 +321,22 @@ void BranchDialog::log()
     GitPlugin::instance()->gitClient()->log(QString(m_repository), QString(), false, QStringList(branchName));
 }
 
+void BranchDialog::reset()
+{
+    QString currentName = m_model->fullName(m_model->currentBranch(), true);
+    QString branchName = m_model->fullName(selectedIndex(), true);
+    if (currentName.isEmpty() || branchName.isEmpty())
+        return;
+
+    if (QMessageBox::question(this, tr("Git Reset"), tr("Hard reset branch '%1' to '%2'?")
+                              .arg(currentName).arg(branchName),
+                              QMessageBox::Yes, QMessageBox::No) == QMessageBox::Yes) {
+        GitPlugin::instance()->gitClient()->reset(QString(m_repository), QLatin1String("--hard"),
+                                                  branchName);
+
+    }
+}
+
 void BranchDialog::merge()
 {
     if (!Core::DocumentManager::saveAllModifiedDocuments())
diff --git a/src/plugins/git/branchdialog.h b/src/plugins/git/branchdialog.h
index 841f16150f075248c2a203fb7d91c8d1726bb134..c9e7dbcffdb0ce68705cff384b203a101df76e3c 100644
--- a/src/plugins/git/branchdialog.h
+++ b/src/plugins/git/branchdialog.h
@@ -70,6 +70,7 @@ private slots:
     void rename();
     void diff();
     void log();
+    void reset();
     void merge();
     void rebase();
     void cherryPick();
diff --git a/src/plugins/git/branchdialog.ui b/src/plugins/git/branchdialog.ui
index 92c50a68785012c98616efc1da04edc5f34b246c..8f7be998ad6a107c02496d25666f367956e764c4 100644
--- a/src/plugins/git/branchdialog.ui
+++ b/src/plugins/git/branchdialog.ui
@@ -130,6 +130,13 @@
             </property>
            </widget>
           </item>
+          <item>
+           <widget class="QPushButton" name="resetButton">
+            <property name="text">
+             <string>Reset</string>
+            </property>
+           </widget>
+          </item>
          </layout>
         </item>
         <item>