Aller au contenu
Photo d’Armand Philippot
Logo d’Armand Philippot

Armand Philippot

Intégrateur web

Première Pull Request sur Github

Écrit par :
Armand
Publié le :
Mis à jour le :
Temps de lecture :
4 minutes

Je suis sur Github depuis bientôt un an, mais je n’avais encore jamais fait de « pull request ». Je n’étais pas assez à l’aise avec Git avant et je craignais peut-être de faire une erreur dans le dépôt de quelqu’un d’autre. Il y a quelques jours, j’ai finalement fait ma première pull request.

Pour une première fois, je ne me suis pas occupé de corriger un bug ou de coder une fonctionnalité. J’ai simplement ajouté Coldark dans le dépôt des thèmes pour Prism.js. Cela reste un premier pas.

Faire une pull request sur Github

Dans mon cas, la procédure a été simple. Il suffit de se placer dans le dépôt où l’on souhaite contribuer. Là, vous verrez un bouton « Fork ».

Fork Github

En cliquant dessus, une copie de ce dépôt sera placée sur votre compte.

Exemple de copie de dépôt Github

À partir de là, il suffit de cloner votre copie dans un répertoire sur votre ordinateur. Vous faîtes vos modifications. Vous ajoutez les fichiers modifiés ou créés à Git, puis vous créez un commit et vous mettez à jour votre dépôt distant.

En résumé :

git clone git@github.com:votreCompte/copie-du-depot.git
# Vos modifications...
git add .
git commit -m "votre message"
git push

Ces étapes sont donc basiques. Il ne vous reste plus qu’à vous rendre sur Github dans la copie du dépôt. Il vous indiquera si votre copie est à jour et, si c’est le cas, vous pouvez créer votre pull request. Github vous affichera les changements. Si tout vous semble bon, il ne reste plus qu’à ajouter un message et à envoyer la pull request. Ensuite, vous attendez qu’un mainteneur du dépôt valide ces changements.

Si vous avez suivi les règles de participation généralement inscrites dans le dépôt, vos modifications devraient être ajoutées. Sinon, le mainteneur vous demandera peut-être d’effectuer des modifications.

De même, si votre la copie du dépôt n’était pas à jour, vous aurez sans doute d’autres manipulations à effectuer.

Que faire ensuite ?

Lorsque vos modifications sont ajoutées au dépôt initial, Github vous propose de supprimer votre copie. Il est donc possible de le faire, mais cela gêne un peu l’historique du dépôt. Il sera affiché « unknown repository » plutôt que votre copie dans l’historique. Ceci dit, ça reste une option si vous ne voulez pas surcharger votre compte de forks.

Exemple : unknown repo après pull request

Si vous décidez de conserver la copie, et que vous souhaitez la garder à jour au cas où vous auriez d’autres ajouts à faire, vous risquez d’être confronté à un problème. Dans mon cas, Github m’affichait que j’avais « 1 commit en avance et 1 en retard » par rapport au dépôt original… J’ai suivi les instructions de Github dans la documentation, en ajoutant un remote et en créant un merge. Résultat : « 2 commits en avance, 1 en retard ». Ce n’était pas le résultat souhaité.

Voici la procédure que j’ai suivi pour que ma copie soit à jour :

git remote add upstream git@github.com:Mainteneur/depot-initial.git
# Vérifiez que vous êtes bien sur votre branche master
git checkout master
git reset --hard upstream/master
git push --force

En temps normal, j’évite d’utiliser --force, mais ici je savais que je n’avais aucun changement en attente sur ma copie. Tout ce que je souhaitais c’était mettre à jour ma copie, donc l’option --force n’allait pas poser de problème.

D’après ce que j’ai pu lire, j’ai eu ce problème parce que je n’ai pas créé de branche ; j’ai travaillé directement sur master pour le peu que j’avais à faire… Donc, si vous pensez à créer une branche, vous ne devriez pas avoir à faire les manipulations décrites au dessus.

Une meilleure façon de faire

Depuis que j’ai écrit cet article, j’ai eu l’occasion de tester en créant une branche et, effectivement, le précédent problème n’apparaît pas. Pour cela, il faut faire les mêmes manipulations que celles présentées au début de l’article en y ajoutant quelques étapes :

git clone git@github.com:votreCompte/copie-du-depot.git
git checkout -b uneNouvelleBranche
# Vos modifications...
# Vos commits... (git add vosFichiers puis git commit)
git push

Puis, pour conserver le fork à jour, il suffit de faire :

git remote add upstream git@github.com:Mainteneur/depot-initial.git
git checkout master
# Si votre pull request a été acceptée et intégrée au dépôt, supprimez la branche :
# git branch -d votreBranche
git fetch upstream
git merge upsteam/master
git push

Il s’agit d’une meilleure façon de faire, mais ce n’est peut-être pas LA meilleure. Ici, fetch puis merge revient à faire un git pull. Plutôt que d’utiliser merge, certains préféreront utiliser rebase. Les opinions divergent.

Épilogue

Pour finir, si vous n’êtes pas développeur, mais que vous souhaitez contribuer à l’open source en mettant à jour une documentation par exemple, NextInpact vous explique comment créer des pull requests sans installer Git. Tout peut se faire en ligne.

Commentaires

  1. Martial MANCIP avatar
    Martial MANCIP

    Merci Armand pour cet article qui m’a bien servi. J’aurais dû lire la fin sur la création de branche d’abord !

    Laisser un commentaire