Git : utiliser plusieurs dépôts distants

Il est parfois utile d’avoir deux dépôts distants différents (« remote repository ») pour un même dépôt local (« local repository »). Pour une telle configuration, il faut utiliser l’option set-url.

Pourquoi utiliser deux « remotes » ?

Si vous suivez les différents projets que je mets en ligne, comme le thème Minimalist que je viens de mettre en ligne, vous avez sûrement constaté que je propose à chaque fois deux liens : l’un vers Github, l’autre vers Gitlab. J’utilise souvent cette technique pour mes projets. L’intérêt est avant tout de sauvegarder ces projets à plusieurs endroits. Si l’un des dépôts distants subit un jour des problèmes, j’ai toujours un « remote » accessible. Par ailleurs, certains préfèrent utiliser Gitlab plutôt que Github, je leur laisse ainsi le choix. Il existe sans doute d’autres raisons, mais ce sont les principales pour moi.

Git Logo

Comment utiliser plusieurs remotes pour un repo local ?

Dans cet exemple, nous allons configurer 2 dépôts distants, mais si vous comprenez le principe, vous pouvez facilement en ajouter d’autres. Pour y parvenir, il suffit d’utiliser la commande :

git remote set-url --add --push <remote_name> <url>

Imaginons que vous ayez un repo local appelé « monprojet ». Vous souhaitez un remote Github à l’adresse git@github.com:VotreNom/monprojet.git et un remote Gitlab à l’adresse git@gitlab.com:VotreNom/monprojet.git.

Dans votre dépôt local, vous allez configurer Git de la manière suivante :

// Nous configurons un remote nommé github
git remote add github git@github.com:VotreNom/monprojet.git

// Nous configurons un remote nommé gitlab
git remote add gitlab git@gitlab.com:VotreNom/monprojet.git

// Nous configurons un remote nommé all qui servira à faire un push sur les 2 remotes en même temps
git remote add all git@github.com:VotreNom/monprojet.git

// Nous configurons deux adresses pour les "push" du remote all
git remote set-url --add --push all git@github.com:VotreNom/monprojet.git
git remote set-url --add --push all git@gitlab.com:VotreNom/monprojet.git

// Nous indiquons que all doit être lié à master (le upstream par défaut)
git push -u all

Grâce à la dernière commande, nous configurons Git pour que « all » suive « master ». Vous auriez aussi pu saisir :

git push --set-upstream all master

Dorénavant, la commande git push suffira pour mettre à jour vos dépôts distants. Vous n’aurez pas à réutiliser l’option -u ou --set-upstream.

Si vous listez les remotes avec la commande git remote -v, vous devriez maintenant avoir une sortie ressemblant à :

all	git@github.com:VotreNom/monprojet.git (fetch)
all	git@github.com:VotreNom/monprojet.git (push)
all	git@gitlab.com:VotreNom/monprojet.git (push)
github	git@github.com:VotreNom/monprojet.git (fetch)
github	git@github.com:VotreNom/monprojet.git (push)
gitlab	git@gitlab.com:VotreNom/monprojet.git (fetch)
gitlab	git@gitlab.com:VotreNom/monprojet.git (push)

À partir d’un clone

Lorsque vous clonez un repo, il faut se souvenir de configurer les deux remotes. Si vous souhaitez garder une configuration identique pour chacun de vos dépôts, il faudra penser à renommer le remote configuré.

Par exemple, si vous clonez votre dépôt Github, lorsque vous utilisez la commande git remote -v, vous devriez avoir une sortie ressemblant à :

origin	git@github.com:VotreNom/monprojet.git (fetch)
origin	git@github.com:VotreNom/monprojet.git (push)

Ici, le remote Github se nomme « origin ». Il faudra utiliser la commande git remote rename pour le renommer :

git remote rename origin github

À partir de là, vous pouvez suivre les étapes précédentes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.