(Contributor) Clone the Magento repository

Totally lost? Need a helping hand? Try our installation quick reference (tutorial) or installation roadmap (reference).

Intended audience

The audience for this topic is anyone who contributes to the Magento CE codebase. You should be highly technical, understand Composer and Git commands, and be able to upgrade the Magento system software and extensions using those commands. If that isn’t you, go back and choose another starting point.

If you clone the Magento 2 GitHub repository, you cannot use the Magento software in a production environment. You cannot have a live store that accepts orders and so on.

Prerequisites

Before you continue, make sure you’ve done all of the following:

Composer and Magento

We use Composer for dependency management. Composer enables us to manage the Magento components and their dependencies.

As an integrator, you want to manage each of your Magento core components and third-party components using the Component Manager and System Upgrade.

To do so, you start by creating a Composer project from our metapackage. The metapackage installs each component so it can be centrally managed after installation.

Composer provides you with the following advantages:

  • Enables you to reuse third-party libraries without bundling them with source code
  • Component-based architecture with robust dependency management
  • Manages dependencies to reduce extension conflicts and compatibility issues
  • Versioned dependencies
  • Semantic versioning
  • Supports the PHP Framework Interoperability standard

Install Composer

First, check if Composer is already installed:

In a command prompt, enter any of the following commands:

  • composer --help
  • composer list --help

If command help displays, Composer is already installed.

If an error displays, use the following steps to install Composer.

To install Composer:

  1. Change to or create an empty directory on your Magento server.

  2. Enter the following commands:

    curl -sS https://getcomposer.org/installer | php
    mv composer.phar /usr/local/bin/composer
    

    For additional installation options, see the Composer installation documentation.

Clone the Magento repository

This section discusses how to get current code by cloning the Magento GitHub’s develop branch. You can clone either a release branch or the develop branch:

  • Release branches like 2.1.0 are more stable

    You must use a released branch with the Data Migration Tool.

  • develop is more recent

Currently, the develop branch is the default but you can checkout a release branch like 2.1.0 after cloning.

Creating an authorization file

The Magento 2 GitHub repository requires you to authenticate. The composer install commands fails if you do not. To authenticate, generate authentication keys, after which you create an auth.json file in the home directory of the Magento file system owner.

Generate authentication tokens

Overview of Magento authentication

The repo.magento.com repository, where Magento 2 and third-party component Composer packages are stored, requires authentication. To provide secure authentication, we enable you to generate a pair 32-character authentication tokens you can use to access the repository. You generate, access, and can also delete or regenerate your keys using Magento Marketplace.

To get your authentication keys:

  1. Go to Magento Marketplace.
  2. Click Sign In and enter your login credentials.

    If you don’t have a free account, click Create an Account.

  3. After you log in, click My Access Keys as the following figure shows.

    Get your secure access keys on Magento Marketplace

  4. If you already have keys, use the Public Key as your user name and the Private Key as your password.
  5. To create a new key pair, click Create a New Access Key.

    The following figure shows an example.

  6. When prompted, enter a descriptive name to identify the key pair.
  7. Click Generate New.

    Use the Public key as your user name and the Private key as your password.

Manage your authentiation keys

You can optionally disable or delete authentication keys you created. For example, you can disable or delete keys for security reasons after someone left your organization.

  • To disable keys: Click Disable. You can do this if you want to suspend use of your keys.
  • To enable a previously disabled key: Click Enable.
  • To delete keys: Click Delete.

You cannot delete or disable keys you created by signing in to magento.com. To manage those keys:

  1. Log in to your magento.com account.
  2. In the top navigation bar, click Connect.
  3. In the left pane, click Secure keys.

    Access your keys

  4. Enable or disable the desired keys.

Create auth.json

To create auth.json:

  1. Log in to your Magento server as, or switch to, the Magento file system owner.
  2. Edit or create auth.json in the user’s home directory.

    The following example shows how to add repo.magento.com authentication to an existing file:

    {
       "github-oauth": {
         "github.com": "<your github oauth id>"
       },
       "http-basic": {
          "repo.magento.com": {
             "username": "<public key>",
             "password": "<private key>"
          }
       }
    }
    
    For example, if your user name is magento_user, create or edit /home/magento_user/.composer/auth.json

How to clone the Magento 2 GitHub repository

You can clone the Magento 2 GitHub repository using either SSH or HTTPS protocols:

  • Use SSH for better security (no user name and password are exchanged). This requires you to share a public key with GitHub.
  • Use HTTPS if you don’t share an SSH key with GitHub (your user name and password are encrypted before being sent to GitHub).

See one of the following section:

Clone with SSH

To clone the Magento GitHub repository using the SSH protocol:

  1. Copy to the clipboard the Magento GitHub repository SSH clone URL.

    a. In a web browser, go to the Magento GitHub repository.

    b. On the right side of the page, under the clone URL field, click SSH.

    c. Click the Copy to clipboard button.

    The following figure shows an example.

    Clone the Magento GitHub repository using SSH

  2. Change to your web server’s docroot directory. Typically, for Ubuntu, it’s /var/www or /var/www/html and for CentOS it’s /var/www/html.

    Need help locating the docroot? Click here.

  3. Enter git clone and paste the value you obtained from step 1.

    An example follows:

    git clone git@github.com:magento/magento2.git
    
  4. Wait for the repository to clone on your server.

    If the following error displays, make sure you shared your SSH key with GitHub:

    Cloning into 'magento2'...
    Permission denied (publickey).
    fatal: The remote end hung up unexpectedly
  5. Optionally switch to a release tag as follows:

    git checkout tags/<tag name> [-b <version>]
    

    For example, to check out the 2.1.0 release tag in a new branch named 2.1.0, enter

    git checkout tags/2.1.0 -b 2.1.0
    
  6. Continue with Update installation dependencies.

Clone with HTTPS

To clone the Magento GitHub repository using the HTTPS protocol:

  1. Copy to the clipboard the Magento GitHub repository HTTPS clone URL.

    a. In a web browser, go to the Magento GitHub repository.

    b. On the right side of the page, under the clone URL field, click HTTPS.

    c. Click the Copy to clipboard button.

    The following figure shows an example.

    Clone the Magento GitHub repository using HTTPS

  2. Change to your web server’s docroot directory.

    Typically, for Ubuntu, it’s /var/www or /var/www/html and for CentOS it’s /var/www/html.

  3. Enter git clone and paste the value you obtained from step 1.

    An example follows

    git clone https://github.com/magento/magento2.git
    
  4. Wait for the repository to clone on your server.

  5. Optionally switch to a release tag as follows:

    git checkout tags/<tag name> [-b <version>]
    

    For example, to check out the 2.1.0 release tag in a branch named 2.1.0, enter

    git checkout tags/2.1.0 -b 2.1.0
    

Next step

After completing the tasks discussed on this page, see Update installation dependencies.