diff --git a/src/plugins/git/gitclient.cpp b/src/plugins/git/gitclient.cpp
index 90bd390e27fb12dee9073ed4dd1c68cdf2ca7448..67b456755bb61013b631959f3b982b54d37d4a34 100644
--- a/src/plugins/git/gitclient.cpp
+++ b/src/plugins/git/gitclient.cpp
@@ -63,12 +63,13 @@
 #include <vcsbase/vcsbaseoutputwindow.h>
 #include <vcsbase/vcsbaseplugin.h>
 
-#include <QRegExp>
-#include <QTime>
-#include <QFileInfo>
+#include <QCoreApplication>
 #include <QDir>
+#include <QFileInfo>
 #include <QHash>
+#include <QRegExp>
 #include <QSignalMapper>
+#include <QTime>
 
 #include <QComboBox>
 #include <QMessageBox>
@@ -401,6 +402,9 @@ GitClient::GitClient(GitSettings *settings) :
 {
     QTC_CHECK(settings);
     connect(Core::ICore::instance(), SIGNAL(saveSettingsRequested()), this, SLOT(saveSettings()));
+    m_gitQtcEditor = QString::fromLatin1("\"%1\" -client -block -pid %2")
+            .arg(QCoreApplication::applicationFilePath())
+            .arg(QCoreApplication::applicationPid());
 }
 
 GitClient::~GitClient()
@@ -1538,6 +1542,7 @@ QProcessEnvironment GitClient::processEnvironment() const
             && settings()->boolValue(GitSettings::winSetHomeEnvironmentKey)) {
         environment.insert(QLatin1String("HOME"), QDir::toNativeSeparators(QDir::homePath()));
     }
+    environment.insert(QLatin1String("GIT_EDITOR"), m_gitQtcEditor);
     // Set up SSH and C locale (required by git using perl).
     VcsBase::VcsBasePlugin::setProcessEnvironment(&environment, false);
     return environment;
diff --git a/src/plugins/git/gitclient.h b/src/plugins/git/gitclient.h
index 59dd9bb3af501f34f15fd7ce77fb65ebb9f093f4..63344a8562a0ebc74d4991bbaa6a715ede0a8468 100644
--- a/src/plugins/git/gitclient.h
+++ b/src/plugins/git/gitclient.h
@@ -341,6 +341,7 @@ private:
     const QString m_msgWait;
     QSignalMapper *m_repositoryChangedSignalMapper;
     GitSettings *m_settings;
+    QString m_gitQtcEditor;
 };
 
 } // namespace Internal