diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index e29e2d6889f278aab50002636474ce1442e9ff31..d14c4d04840fba980ff984a50c19ab28031d8777 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -2576,6 +2576,19 @@ bool GitClient::tryLauchingGitK(const QProcessEnvironment &env,
     return success;
 }
 
+bool GitClient::launchGitGui(const QString &workingDirectory) {
+    bool success;
+    QString gitBinary = gitBinaryPath(&success);
+    if (success)
+        success = QProcess::startDetached(gitBinary, QStringList(QLatin1String("gui")),
+                                          workingDirectory);
+
+    if (!success)
+        outputWindow()->appendError(tr("Cannot launch git gui"));
+
+    return success;
+}
+
 QString GitClient::gitBinaryPath(bool *ok, QString *errorMessage) const
 {
     return settings()->gitBinaryPath(ok, errorMessage);
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index faf39964683e2c3fd26b89ee33f8f3a4f846d4ab..67704aaed6315d3d6cbcea321091adc4bfc3667e 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -295,6 +295,7 @@ public:
 
     void launchGitK(const QString &workingDirectory, const QString &fileName);
     void launchGitK(const QString &workingDirectory) { launchGitK(workingDirectory, QString()); }
+    bool launchGitGui(const QString &workingDirectory);
 
     void launchRepositoryBrowser(const QString &workingDirectory);
 
diff --git a/src/plugins/git/gitplugin.cpp b/src/plugins/git/gitplugin.cpp
index b7d4976978c79089cdb7557458c5c3d64ce9ebcf..917a47a39ce05241dd2f5f135aa25886125462a9 100644
--- a/src/plugins/git/gitplugin.cpp
+++ b/src/plugins/git/gitplugin.cpp
@@ -634,6 +634,12 @@ bool GitPlugin::initialize(const QStringList &arguments, QString *errorMessage)
     // --------------
     gitToolsMenu->addSeparator(globalcontext);
 
+    createRepositoryAction(gitToolsMenu, tr("Git Gui"), Core::Id("Git.GitGui"),
+                           globalcontext, true, SLOT(gitGui()));
+
+    // --------------
+    gitToolsMenu->addSeparator(globalcontext);
+
     m_repositoryBrowserAction
             = createRepositoryAction(gitToolsMenu,
                                      tr("Repository Browser"), Core::Id("Git.LaunchRepositoryBrowser"),
@@ -927,6 +933,13 @@ void GitPlugin::gitkForCurrentFolder()
     }
 }
 
+void GitPlugin::gitGui()
+{
+    const VcsBase::VcsBasePluginState state = currentState();
+    QTC_ASSERT(state.hasTopLevel(), return);
+    m_gitClient->launchGitGui(state.topLevel());
+}
+
 void GitPlugin::startAmendCommit()
 {
     startCommit(AmendCommit);
diff --git a/src/plugins/git/gitplugin.h b/src/plugins/git/gitplugin.h
index 4a70caedeebd5da6556299e91f61def7b27efb0d..5a4663dfdcf92788665a29c36b3381feaf0b22f0 100644
--- a/src/plugins/git/gitplugin.h
+++ b/src/plugins/git/gitplugin.h
@@ -123,6 +123,7 @@ private slots:
     void unstageFile();
     void gitkForCurrentFile();
     void gitkForCurrentFolder();
+    void gitGui();
     void cleanProject();
     void cleanRepository();
     void updateSubmodules();