Académique Documents
Professionnel Documents
Culture Documents
Git / GitHub
Table des ma ères
Contexte ..................................................................................................................................................3
Ges on des branches ..............................................................................................................................3
Commit et merge request : .....................................................................................................................4
Ges on de version du projet ...............................................................................................................8
Sécurité ...............................................................................................................................................9
Les commandes GIT : ............................................................................................................................10
ti
ti
ti
Contexte
Ce document vise à décrire les bonnes pra que Git ainsi que la ges on du projet avec ce
système de versionning.
• Dev :
Le rôle de la branche « DEV » est de contenir la prochaine version à déployer
Note : Les mises à jour seront réalisées tout au long du sprint
Si vous travaillez avec d'autres personnes sur votre projet, il est important de tenir
vos branches à jour avec les dernières modi ca ons de la branche « dev ».
tf
tf
ti
fi
ti
ti
ti
tt
tf
ti
ti
tt
ff
fi
fi
fi
ti
ti
ti
ti
fi
fi
De ce e façon, lorsque vous pousser une demande d'extrac on, il n'y aura pas de
con its de fusion et votre modi ca on sera plus suscep ble d'être acceptée. Bien sûr, vous
ne devez pas accepter aveuglément tous les changements de la branche principale - s'il y a
des changements avec lesquels vous n'êtes pas d'accord, discutez-en avec votre équipe avant
de les fusionner dans votre propre branche.
Pour cela, il faut exécuter les commandes git suivants :
git checkout dev
git pull
git checkout nom_de_votre_branche
git rebase dev
Si vous travaillez sur une nouvelle fonc onnalité pour votre projet, créez une branche
dis ncte pour celle-ci au lieu de travailler directement dans la branche « dev ». De ce e
façon, si votre fonc onnalité n'est pas encore prête pour « la release », vous pouvez la
garder hors de la branche « dev » jusqu'à ce qu'elle soit prête à être fusionnée.
ti
ti
tt
fi
ti
tt
ti
fi
ti
fi
fi
ti
ti
ti
fi
ti
ti
ff
tt
ti
fi
ti
ti
tt
peut encombrer votre référen el et rendre plus di cile la recherche ultérieure des éléments
importants.
Chaque développeur doit créer une « merge request » vers la branche DEV dès que
celui-ci termine sa tâche, il ne peut pas et il ne doit pas émerger directement sa branche
dans « dev ».
Celle-ci sera par la suite fusionnée quand les condi ons suivantes seront remplies
- Condi on de valida on : une erce personne doit valider la « merge request »
- Condi on technique : la merge request ne présente aucun con it avec le code dans
la branche des na on.
- Condi on d’exécu on : les « jobs » suivants ont été correctement exécutés.
ti
fi
fi
ti
ti
ti
ti
ti
ti
ti
ti
ti
ffi
ti
fl
En cas d’échec d’un de ces « job », un mail est envoyé aux personnes concernées.
NB : il est important de supprimer la branche une fois fusionnée avec la branche « dev » a n
d’éviter d’avoir une liste des branches inu les.
Assurez-vous que la structure de votre projet ainsi que vos tests réussissent avant de
pousser votre code :
Assurez-vous que tous vos tests réussissent avant de valider votre code ! Sinon, vous
pourriez introduire des erreurs dans votre base de code qui auraient pu être facilement
évitées. Il y a des jobs qui se lancent à chaque créa on / mise à jour d’une demande de
fusion pour tester la structure de votre code et la bonne exécu on de vos tests unitaire.
tt
ti
fi
ti
ti
fi
ti
tt
ti
fi
fi
ti
ti
ti
ti
ti
ti
fi
Ne modi ez pas l'historique des commits qui ont été publiés
Ce principe vous évitera de perdre de temps inu lement. Si vous changez l'historique
des commits qui sont visibles par tous, vous risquez de causer des problèmes lorsqu'un
développeur voudra faire une fusion avec son entrepôt local. Donc, pensez-y bien avant
d'u liser une commande qui change l'historique des commits (comme rebase), et si vous le
faites, faites-le seulement sur une branche locale.
Livraison
Pour réaliser une livraison, une « Merge request » de la branche « DEV » vers la
branche « MASTER » doit être réalisée.
La Merge request doit donc être fusionnée, en respectant les condi ons décrites ci-dessus.
Après la fusion, les 3 job (Github Ac ons) suivants sont lancés automa quement :
Job Missions
Build Assurer que la nouvelle version du projet après la fusion est toujours
Test opéra onnelle.
Préparer la version du master avant d’être déployer :
• Incrémenter la version du projet dans les branches « dev » et
Release
« master ».
• Créer un nouveau tag
Au niveau de l’interface principale du projet dans GitHub, il existe une rubrique qui
s’appelle « Releases », elle permet de gérer les di érents release e ectuées sur le projet,
donc il est important de la me re à jour.
ti
ti
fi
tt
ti
ff
ti
ti
ff
ti
La créa on d’un nouveau élément dans ce e rubrique est réalisée une fois que la
branche « dev » est margée dans « master » et que le job « release » est terminée
correctement, car ce dernier crée un « tag » (car chaque release est associée à un tag).
Au moment de créa on d’une nouvelle release, il est pra que de lister les di érentes
« feature » et « bug x » e ectués depuis la dernière release. GitHub est en mesure de
détecter automa quement ces derniers à travers le bouton « Generate release notes » dans
le formulaire de créa on d’une release.
Ce formulaire est accessible via le bouton « Dra a new release » depuis le menu
principale (à travers le bouton « releases »).
ti
fi
ti
ti
ti
fi
ti
ti
ff
ti
ti
tt
ti
ft
ti
ti
ti
ti
ff
fi
ti
ti
- Z correspond au correc f : correc ons d’anomalies rétrocompa bles, failles de
sécurité.
Sécurité
fi
tt
ti
tt
ti
fi
ti
ti
ti
ti
fi
tt
ti
fi
ti
ti
ti
fi
ti
fi
fi
ti
tt
ti
ti
ti
ti
fi
Les commandes GIT :
Création
Opération Commande
Opération Commande
Modifier le dernier commit (__ Ne modifiez pas les commits $ git commit --
publiés !__) amend
Opération Commande
Afficher tous les commits, en commençant par le plus récent $ git log
Opération Commande
Créez une nouvelle branche basée sur votre $ git branch <nouvelle-
HEAD actuel branche>
Créer une nouvelle branche basée sur une $ git checkout --track <remote/
branche distante branche>
Opération Command
Afficher les informations sur une télécommande $ git remote show <remote>
Add new remote repository, named $ git remote add <remote> <url>
Opération Commande
Continuer un rebase après avoir résolu les conflits $ git rebase --continue
Annulation
Opération Commande
Ignorer toutes les modifications locales dans votre $ git reset --hard
répertoire de travail HEAD
Réinitialisez votre pointeur HEAD sur un commit précédent $ git reset --hard
et supprimez toutes les modifications depuis <commit>
Réinitialisez votre pointeur HEAD sur un commit précédent $ git reset --keep
et conservez les modifications locales non validées <commit>