diff --git a/src/Handler.php b/src/Handler.php
index 740337189bc7b6f915772f8259a1471b2e3f7dfc..9fecb7c5b577ddc9072ea0ca74290f2fe3830156 100644
--- a/src/Handler.php
+++ b/src/Handler.php
@@ -100,9 +100,11 @@ class Handler {
     foreach ($repository->getRemotes() as $remote) {
       if ($remote->getName() == 'origin') {
         if ($remote->getFetchURL() != $uri) {
-          $remote->setFetchURL($uri);
+          $repository->getCaller()->execute('remote remove origin');
+        }
+        else {
+          $originExists = TRUE;
         }
-        $originExists = TRUE;
         break;
       }
     }
@@ -113,6 +115,7 @@ class Handler {
       $fs->mkdir($path);
       $repository->init();
       $repository->addRemote('origin', $uri);
+      $repository->getCaller()->execute('branch --set-upstream-to origin/' . $version . ' ' . $version);
     }
 
     $repository->fetch();
diff --git a/src/Plugin.php b/src/Plugin.php
index e1745fd406a2fe58168a2e0bf99d7a4548ca5ea5..cb64a27df0aaf2c2202aa72d373d5ab20491c845 100644
--- a/src/Plugin.php
+++ b/src/Plugin.php
@@ -44,4 +44,14 @@ class Plugin implements PluginInterface, EventSubscriberInterface {
     $this->handler->prepareDevProjects($event);
   }
 
+  /**
+   * Script callback for putting in composer scripts to prepare the project.
+   *
+   * @param \Composer\Script\Event $event
+   */
+  public static function prepare($event) {
+    $handler = new Handler($event->getComposer(), $event->getIO());
+    $handler->prepareDevProjects($event);
+  }
+
 }