diff --git a/src/plugins/git/gitcommand.cpp b/src/plugins/git/gitcommand.cpp
index e3fcd8571bfa7d57fa0359628244e21a462bdfaa..77b945802efc37b1cf91abbc0c38acf022fa7d9c 100644
--- a/src/plugins/git/gitcommand.cpp
+++ b/src/plugins/git/gitcommand.cpp
@@ -104,10 +104,6 @@ void GitCommand::execute()
     if (m_jobs.empty())
         return;
 
-    if(!QFileInfo(m_binaryPath).exists()){
-        emit errorText(QLatin1String("Error: Git not found.")+m_binaryPath);
-        return;
-    }
     // For some reason QtConcurrent::run() only works on this
     QFuture<void> task = QtConcurrent::run(this, &GitCommand::run);
     const QString taskName = QLatin1String("Git ") + m_jobs.front().arguments.at(0);
@@ -137,8 +133,15 @@ void GitCommand::run()
             qDebug() << "GitCommand::run" << j << '/' << count << m_jobs.at(j).arguments;
 
         process.start(m_binaryPath, m_jobs.at(j).arguments);
+        if(!process.waitForStarted()) {
+            ok = false;
+            error += QString::fromLatin1("Error: \"%1\" could not be started: %2").arg(m_binaryPath, process.errorString());
+            break;
+        }
+
         process.closeWriteChannel();
         if (!process.waitForFinished(m_jobs.at(j).timeout * 1000)) {
+            process.terminate();
             ok = false;
             error += QLatin1String("Error: Git timed out");
             break;