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.
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
(leupstream
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 à :
git remote -v
#output#all git@github.com:VotreNom/monprojet.git (fetch)
#output#all git@github.com:VotreNom/monprojet.git (push)
#output#all git@gitlab.com:VotreNom/monprojet.git (push)
#output#github git@github.com:VotreNom/monprojet.git (fetch)
#output#github git@github.com:VotreNom/monprojet.git (push)
#output#gitlab git@gitlab.com:VotreNom/monprojet.git (fetch)
#output#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 à :
git remote -v
#output#origin git@github.com:VotreNom/monprojet.git (fetch)
#output#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.
0 commentaire
Laisser un commentaire