diff --git a/src/Handler.php b/src/Handler.php
index a30d99e46e78195c1b3a34b4456c2ad85c83c8b1..740337189bc7b6f915772f8259a1471b2e3f7dfc 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -7,6 +7,7 @@ use Composer\Composer;
 use Composer\IO\IOInterface;
 use Composer\Script\Event as ScriptEvent;
 use GitElephant\Repository;
+use Symfony\Component\Filesystem\Filesystem;
 
 class Handler {
 
@@ -88,11 +89,33 @@ class Handler {
    */
   protected function prepareWorkingDirectory($path, $project, $version, $username) {
     list(, $projectname) = explode('/', $project);
-    $repo = $username . '@git.drupal.org:project/' . $projectname . '.git';
+    $uri = $username . '@git.drupal.org:project/' . $projectname . '.git';
 
     // Git Clone the repository into the working directory
     $repository = Repository::open($path);
-    $repository->cloneFrom($repo, '.');
+    $repository->init();
+
+    $originExists = FALSE;
+    /** @var \GitElephant\Objects\Remote $remote */
+    foreach ($repository->getRemotes() as $remote) {
+      if ($remote->getName() == 'origin') {
+        if ($remote->getFetchURL() != $uri) {
+          $remote->setFetchURL($uri);
+        }
+        $originExists = TRUE;
+        break;
+      }
+    }
+
+    if (!$originExists) {
+      $fs = new Filesystem();
+      $fs->remove($path);
+      $fs->mkdir($path);
+      $repository->init();
+      $repository->addRemote('origin', $uri);
+    }
+
+    $repository->fetch();
     $repository->checkout($version);
   }