Contexte
Vous avez des dépôts sur GitLab pour votre utilisation personnelle ou professionnelle. Pour toucher plus de développeurs, vous déployez ces mêmes dépôts sur GitHub. Comment synchroniser ces deux dépôts afin que GitLab reçoive les patchs du dépôt GitHub ?
Voyons, par l'exemple, la procédure que nous utilisons, en interne, pour gérer le dépôt du module Python MSS.
Initialisation
Le dépôt est crée dans GitLab, vierge ou non (c'est-à-dire que du contenu a pu être récupéré depuis SVN, GitHub, Bitbucket, GitLab.com, Gitorious.org ou encore Google Code). Ensuite, en console :
$ git clone https://gitlab.localhost/Tiger-222/python-mss.git
$ cd python-mss
# On ajoute le dépôt distant
$ git remote add upstream https://github.com/BoboTiG/python-mss
Synchronisation
On récupère tous les fichiers, branches, tags, commits, etc. depuis le dépôt distant :
$ git fetch upstream
remote: Counting objects: 74, done.
remote: Compressing objects: 100% (74/74), done.
remote: Total 74 (delta 43), reused 0 (delta 0), pack-reused 0
Dépaquetage des objets: 100% (74/74), fait.
Depuis https://github.com/BoboTiG/python-mss
* [nouvelle branche] develop -> upstream/develop
* [nouvelle branche] master -> upstream/master
Il y a donc 2 branches qu'il va falloir synchroniser.
La branche master étant celle par défaut, l'opération est simple :
$ git pull upstream master
Depuis https://github.com/BoboTiG/python-mss
* branch master -> FETCH_HEAD
Mise à jour e938c32..a4d4050
Fast-forward
(...)
On pousse les mises à jour :
$ git push
Total 0 (delta 0), reused 0 (delta 0)
To https://gitlab.localhost/Tiger-222/python-mss.git
e938c32..a4d4050 master -> master
Pour la branche develop, il faut d'abord la créer, ensuite la synchroniser :
$ git checkout -b develop
$ git pull upstream develop
Depuis https://github.com/BoboTiG/python-mss
* branch develop -> FETCH_HEAD
Mise à jour a4d4050..838174d
Fast-forward
(...)
On pousse les mises à jour :
$ git push --set-upstream origin develop
Décompte des objets: 74, fait.
Delta compression using up to 4 threads.
Compression des objets: 100% (74/74), fait.
Écriture des objets: 100% (74/74), 101.16 KiB | 0 bytes/s, fait.
Total 74 (delta 47), reused 0 (delta 0)
To https://gitlab.localhost:8080/Tiger-222/python-mss.git
a4d4050..838174d develop -> develop
La branche develop est paramétrée pour suivre la branche distante develop depuis origin.
Et voilà !
Mémo pour synchroniser la branche untel :
$ git checkout -b untel
$ git pull upstream untel
$ git push --set-upstream origin untel
Mises à jour
Lorsque vous souhaitez mettre à jour la branche untel :
$ git checkout untel
$ git pull upstream untel
$ git push
Source : gitready.com » easily fetching upstream changes .