Je proposes ici, une méthode fiable et simple pour la gestion des sources dans le contexte d’un projet collaboratif.

J’ai utilisé et adopté la procédure suivante sur un projet récent et elle fonctionne relativement bien dans le contexte décrit.

Il y a sûrement d’autres manières de faire alors n’hésitez pas à commenter cet article en proposant une meilleure méthode.

Contexte

  • Un projet original auxquel vous souhaitez contribuer et qui est hébergé sur Github à l’adresse https://github.com/radical-software/mongrey.git

  • Le fork se trouvera sur https://github.com/srault95/mongrey.git

  • Vous avez bien entendu un compte Github pour forker le projet original

  • Vous disposez d’un git local

1. Fork du projet original vers votre repo github

  • Bouton fork du projet original sur Github

2. Clonez localement votre fork Github

Lors d’un clonage, le dépôt se nomme par défaut origin. Ne changez pas ce nom pour que les instructions suivantes restent valables.

git clone https://github.com/srault95/mongrey.git

3. Ajout local du repo original, sous le nom de upstream

Pour avoir un lien direct avec le dépôt original, il faut ajouter son adresse dans votre dépôt local. Gardez le nom de upstream

$ git remote add upstream https://github.com/radical-software/mongrey.git

# Vérifiez l'ajout du dépôt
$ git remote -v show
origin  https://github.com/srault95/mongrey.git (fetch)
origin  https://github.com/srault95/mongrey.git (push)
upstream        https://github.com/radical-software/mongrey.git (fetch)
upstream        https://github.com/radical-software/mongrey.git (push)

4. Créez une branche de fonctionnalité ou une branche corrective

En local, travaillez toujours sur une autre branche que master Création et activation de la branche en une seule opération

git checkout -b ma-branche

5. Cycle normal de développement dans la nouvelle branche

git add mes_modification.py
git ci -m "message"

5.1. Remisez votre code avec stash.

Si vous avez du code qui n’est pas dans les commits, remisez le temporairement, vous pourrez le récupérer plus tard. Le code qui n’a pas été ajouté par git add n’est pas concerné

# Remise le code
git stash

# Remise le code avec un commentaire
git stash save -u 'Début du refactoring Bootstrap 3'

# Affichez la liste des codes remisés
git stash list

# Voir un code en particulier, sous forme de patch
# le {0} correspond à la position du code dans la remise
git stash show -p stash@{0}

6. Poussez la branche local vers votre fork

git push origin MABRANCHE

7. Créez un pull request à partir de cette branche, sur votre fork Github

  • Bouton New pull request dans https://github.com/[VOTRE_COMPTE]/mongrey/branches

8. Synchronisez votre dépôt local

A faire, en local, après le merge du Pull Request par le propriétaire du projet original. Remarque: il ne peut y avoir de conflit puisque vous ne travaillez jamais dans master

git checkout master

# Certains préfèreront un fetch et un rebase mais je ne suis pas un expert Git :)
git pull upstream master

9. Détruisez la branche locale qui est maintenant mergée dans le master

git branch -d MABRANCHE

10. Push du master à jour vers votre fork github

git push origin master

11. Détruisez la branche sur le fork github

  • Bouton corbeille

Stéphane RAULT


Commentaires

comments powered by Disqus