GitHub – Mettre à jour un fork

Si vous développez sur des projets Open Source, vous serez sûrement amenés à utiliser Git, logiciel de gestion de version, et GitHub, hébergeur de dépôts Git. Si l’univers GitHub ne vous est pas familié, je vous conseille la vidéo de Grafikart qui explique quelques notions essentielles. Dans cet article, nous allons aborder la mise à jour d’un fork (copie d’un dépôt).

people-coffee-notes-tea

Imaginons que j’ai créé un fork cicoub13/superprojet du dépôt google/superprojet.

Quelques temps après, des modifications (commits) ont été faites sur le dépôt source et mon fork n’est donc plus à jour. Voici la solution pour mettre à jour en ligne de commande votre fork.

Si ce n’est pas déjà fait, ajoutez le dépôt source en tant que dépôt upstream :

$ git remote add upstream [email protected]:google/superprojet.git

Vous pouvez vérifier que tout est correct avec la commande :

$ git remote -v
origin https://github.com/cicoub13/superprojet.git (fetch)
origin https://github.com/cicoub13/superprojet.git (push)
upstream https://github.com/google/superprojet.git (fetch)
upstream https://github.com/google/superprojet.git (push)

Il faut maintenant récupérer les mises à jour dans upstream :

$ git fetch upstream

Et c’est là où il y a une petite astuce. J’avais l’habitude de faire un merge (git merge upstream/master) pour mettre à jour mon fork. Mais cela laisse une trace de la mise à jour, ce qui peut être mauvais pour une future pull request (commits de merge affichés). La solution est donc de faire un rebase :

$ git rebase upstream/master

mergerebase

Comme je suis sûr que vous développez proprement et que vous créez toujours une branche pour faire des modifications, aucun conflit ne doit apparaître lors de cette opération. Il suffit ensuite de pousser les modifications sur GitHub :

$ git push origin master

Source : Keeping a GitHub fork updated

Vous aimerez aussi...

1 réponse

  1. Alex dit :

    Ce billet est très intéressant

Laisser un commentaire

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