GitHub/Git

DevOPS - AIS

GitHub/Git

« Images et documents librement inspiré de plusieurs sources de dépôt git »

2. Ressources

Vous souhaitez travailler localement sur votre / vos dépôt(s) ou celui de quelqu’un d’autre, par exemple. Vous avez trouvé une grande avancée pour un projet collaboratif ou des fautes à corriger.
Quoi de mieux que de comprendre le Workflow GitHub/Git.

Vous pouvez retourner aux bases GitHub/Git avant de commencer, sinon en route !

a) Le workflow sans branche

Pour vous familiariser avec Git, commencez par ce workflow basique dans lequel vous allez pull de et push vers votre repo sur Github. Cela reste entre vous, sans collaboration avec personne:

b) Votre repo avec branche

Une fois que vous êtes à l’aise avec le workflow décrit ci-dessus, vous êtes prêt à commencer le branching. Le procédé est similaire que l’on travaille sur son propre repo ou sur celui de quelqu’un d’autres.


Différence entre Fork et Branch

Fork : Un fork est une copie d’un dépôt Git qui vous permet de travailler sur un projet sans affecter l’original.

Branch : Une branche est une version parallèle d’un dépôt, utilisée pour développer de nouvelles fonctionnalités ou corriger des bugs sans affecter la branche principale (souvent main ou master). Elle reste dans votre propre dépôt, et vous pouvez ensuite la fusionner (merge) avec la branche principale.


c) 1ère Pull Request (PR) sur un autre repo avec branching

Explication des 7 étapes ci-dessous

Étape 1 : Fork du repo ‘upstream’ (une seule fois)

  • Si vous souhaitez contribuer à un projet GitHub, commencez par « forker » le repo d’origine (upstream).
  • Cela crée une copie du repo sur votre compte GitHub.
  • Le repo « upstream » est le projet d’origine, et « origin » fait référence à votre copie sur GitHub.

Étape 2 : Cloner le repo d’origine et créer un repo local (une seule fois)

  • Pour travailler localement, clonez votre repo d’origine sur votre machine.
  • Utilisez RStudio : Fichier → Nouveau projet → Contrôle de version → Git, puis renseignez l’URL du repo pour créer un projet local.

Étape 3 : Configurer le repo ‘remote’ relié au repo ‘upstream’ (une seule fois)

  • Cette étape est nécessaire si vous synchronisez votre repo avec le repo d’origine (upstream).
  • Ajoutez le repo upstream en utilisant la commande git remote add upstream <url-du-repo> pour lier votre projet local au repo source.

Étape 4 : Créer une branche

  • Avant de commencer à travailler sur une nouvelle fonctionnalité, créez une nouvelle branche.
  • Chaque tâche ou correction doit avoir sa propre branche. Ne réutilisez pas des branches déjà fusionnées.
  • Lors de la création d’une branche, associez-la à la fois localement et sur le repo distant.

Étape 5 : Travailler, commit et push

  • Travaillez sur votre branche locale. Pour enregistrer vos modifications, utilisez les commandes git add pour indexer les fichiers, git commit pour enregistrer les changements localement, et git push pour envoyer les modifications vers GitHub.
  • Faites attention à être sur la bonne branche avant de travailler et à éviter des commits trop fréquents.

Étape 6 : Soumettre une Pull Request (PR)

  • Une fois votre travail terminé et poussé sur GitHub, soumettez une pull request (PR) pour proposer vos modifications au projet d’origine.
  • Cela permet aux mainteneurs du projet de réviser et de fusionner vos changements dans la branche principale.

Étape 7 : Fusionner la pull request

  • Si vous n’êtes pas le mainteneur du projet, vous n’aurez pas à fusionner la pull request (PR) vous-même. C’est généralement le rôle des mainteneurs du projet.
  • Si vous êtes le mainteneur du projet, vous devrez fusionner la PR une fois qu’elle a été approuvée. Vous pouvez le faire directement sur GitHub ou localement après avoir testé le code.
    • Sur GitHub, il suffit de cliquer sur le bouton de fusion de la PR.
    • Pour tester localement avant la fusion, vous pouvez vérifier la PR, effectuer des tests et apporter des modifications si nécessaire, puis fusionner.

d) 2ème-nème PR sur un autre repo avec branching

Étape 1 : Synchroniser avec votre propre dépôt ou celui de quelqu’un d’autre

  • Votre propre dépôt (origine) :
    • Passez à la branche principale : git checkout master
    • Mettez à jour avec la dernière version : git pull
    • Assurez-vous de le faire régulièrement pour éviter d’être en retard.
  • Dépôt de quelqu’un d’autre (upstream) :
    • Ajoutez un repo upstream si ce n’est pas déjà fait.
    • Récupérez les changements : git fetch upstream
    • Passez à la branche principale : git checkout master
    • Fusionnez les changements du dépôt upstream : git merge upstream/master

Étape 2 : Supprimer l’ancienne branche

  • Après la fusion d’une pull request, il est recommandé de supprimer la branche associée.
    1. Supprimer la branche distante :
      • Sur GitHub : Cliquez sur « Supprimer la branche » dans la page de la pull request fermée.
      • Via terminal : git push origin --delete <branchname>
    2. Supprimer la branche locale :
      • Passez à la branche principale : git checkout master
      • Supprimez la branche locale : git branch -d <branchname>
    3. Arrêter de suivre la branche distante :
      • Exécutez : git fetch -p pour nettoyer les branches supprimées.
      • Sinon, vous pouvez toujours voir les branches supprimées dans l’interface Git de RStudio. Une mise à jour manuelle est nécessaire en cliquant sur « master » ou en fermant et rouvrant le projet.

Étape 3 : Mettre à jour votre fork sur GitHub

  • Si vous avez un fork du projet, il est important de garder votre copie GitHub à jour avec les modifications du dépôt upstream.
    • Cette étape est nécessaire pour ne pas avoir de décalage dans les modifications entre votre dépôt local et le dépôt upstream.

Etapes 4-7: Voir ci-dessus


Conclusion

Ce workflow GitHub/Git vous permet de collaborer efficacement tout en gardant votre travail local organisé et synchronisé avec le projet d’origine. En suivant les bonnes pratiques telles que la création de branches pour chaque nouvelle fonctionnalité ou correction et en soumettant des PR pour intégrer vos changements, vous participerez de manière structurée et professionnelle à des projets collaboratifs.


Glossaire

  • Fork : Créer une copie d’un dépôt pour travailler dessus sans affecter le projet d’origine.
  • Branch : Version parallèle d’un dépôt pour travailler sur des fonctionnalités ou corrections sans toucher à la branche principale.
  • PR (Pull Request) : Proposition de modifications à un projet, qui doit être révisée avant d’être fusionnée.
  • Upstream : Le dépôt original d’un projet.
  • Origin : Votre propre copie d’un dépôt sur GitHub.

Schéma récapitulatif :

Commandes Git utiles

  • git remote add upstream <url-du-repo> : Ajoute un lien vers un dépôt « upstream ».
  • git fetch upstream : Récupère les dernières modifications du dépôt « upstream ».
  • git merge upstream/master : Fusionne les changements du dépôt « upstream » dans votre branche principale.
  • git branch -d <branchname> : Supprime une branche locale.
  • git push origin --delete <branchname> : Supprime une branche distante sur GitHub.
  • git fetch -p : Nettoie les références de branches supprimées
  • git clone est pour copier un dépôt entier pour la première fois.
  • git pull est pour récupérer les changements récents après que vous ayez déjà cloné le dépôt.