Skip to main content

Récupérer certaines modifications/ajouts d'un fork sur l'upstream

Théorie

Schéma théorique

Étape 1

Étape 1

  • Faire les modifications nécessaire sur le fork
  • Les modifications/ajouts que l'on souhaire envoyer sur l'upstream doivent être placer dans des commits propres, c'est à dire sans autres modifications => uniquement ce que l'on veut envoyer sur l'upstream
  • git push une fois que les modifications sont faites

Étape 2

Étape 2

  • Créer une nouvelle branch dans notre repository : git checkout -b new_branch
  • Dans notre branch, nous allons maintenant récupérer le contenu de l'upstream (ici la branch master)
    • git fetch upstream
    • git reset --hard upstream/master : le contenu de notre upstream/master est maintenant dans notre branch

Étape 3

Étape 3

  • On va importer les modifications faites sur le repository dans notre branch. Pour cela, nous devons récupérer le hash du commit (depuis github/gitlab ou avec git log)
  • Ensuite, on utilise la commande git cherry-pick hashCommit pour récupérer un commit de notre branch dev sur la branch new_branch
  • Une fois que l'on a récupéré toutes les modifications, on utilise la commande : git push --set-upstream origin new_branch
    • Cela va alors push notre branch sur le remote
    • On pourra également directement créer un pull request entre la branch remote de notre enfant et la branch dev de notre parent
    • Il suffira alors de validier les modifications pour que celles-ci soient envoyées sur le parent

Pratique

On se place dans le répertoire enfant :

repo enfant

On fait les modifications : (ici on a ajouté un nouveau fichier)

repo enfant après modification
Commande git des modifications

On récupère le hash du commit qui nous intéresse : (ici 57184408, seuls les 8 premiers caractères sont importants)

Git log

Création de la noubelle branch : la branch est identique sa master mais pas à l'upstream (pour le moment)

Création de la nouvelle branch

Récupération du contenu de l'upstream :

Récupération du contenu de l'upsteam

Récupération de la nouvelle fonctionnalité :

Récupération de la nouvelle fonctionnalité

Envoi de la branch vers le remote :

Envoi de la branch sur le remote

Un lien est directement proposé afin de créer une pull request entre notre enfant et son parent. Gitlab peut également le proposé depuis son interface web :

Interface graphique - Création d'une pull request

État du parent avant acceptation de la pull request :

État du parent avant acceptation de la pull request

État de l'enfant avant acceptation de la pull request :

État de l'enfant avant acceptation de la pull request

Création de la pull request de la branche enfant vers la branche parent :

Création de la pull request de la branche enfant vers la branche parent
Pull request de la branche enfant vers la branche parent créé
Pull request de la branche enfant vers la branche parent accepté

État du parent après acceptation de la pull request :

État du parent après acceptation de la pull request

État de l'enfant après acceptation de la pull request :

État de l'enfant après acceptation de la pull request