IFT 1025 – Programmation 2
Démo 2
Initiation à Github
Oussama Ben Sghaier
[Link]@[Link]
13-03-2023
Plan
1. Concepts de base de git
2. Demo
2
Système de contrôle de versions (VCS)
C’est quoi un VCS?
Un système de contrôle de versions est un logiciel qui aide les développeurs à collaborer et à
conserver un historique complet de leur travail (c.à.d des versions du projet).
Avantages?
- Gratuit et open source
- Collaboration sur un seul projet (développement en parallèle)
- Fusionner le travail facilement/automatiquement
- Historique du projet
- Récupération/navigation facile dans l’historique
3
Système de contrôle de versions (VCS)
4
Système de contrôle de versions (VCS)
5
Système de contrôle de versions (VCS)
Avant l’utilisation de git Après l’utilisation de git
6
Services web d'hébergement de git
- On peut installer git sur un serveur pour gérer nos projets.
- Il existe des services web d’hébergement gratuits git.
Exemples:
7
Cycle de vie de git
• Working directory: c’est le dossier dans lequel on travaille et qui contient plusieurs fichiers et sous-dossiers. Ces
fichiers ne seront pas indexés par git. Lors de la prochaine ‘sauvegarde’ (commit) ces fichiers ne seront pas
enregistrés dans git.
• Staging area (Index): contient tous les fichiers que git indexe. Ce sont les fichiers qu’on compte enregistrer dans git
lors de la prochaine sauvegarde (commit).
• Repository: contient les versions sauvegardés du projet. On a deux versions ‘Local repository’ et ‘Remote
repository’.
8
Cycle de vie de git
9
Concepts de base
• Stage
• Commit
• Push
• Pull
• Head
• Clone
• Branch
10
Stage
- Par défaut, les fichiers ne sont pas indexés par git.
- L’operation ‘stage’ consiste à indexer des fichiers par git.
- Lors de la prochaine ‘sauvegarde’ (commit), les modifications apportées sur ces fichiers
seront sauvergardées dans git.
Commandes:
• git add fichier : ajouter un fichier spécifique
• git add dossier : ajouter un dossier spécifique et tout son contenu récursivement
• git add . : ajouter tous les fichiers et dossier du repo récursivement
11
Commits
- Fait réference à une sauvegarde ou à une version de notre projet.
- Lors d’un commit, seul les fichiers qui sont dans le ‘staging area’ sont sauvegardés.
- One peut visualiser, modifier, et restaurer un commit spécifique.
Commandes:
• git commit -m “message” : sauvegarder tous les fichiers qui sont dans le staging area
12
Push
- L'opération Push copie les modifications sauvegardées localement dans le repo distant.
- C.à.d synchroniser le repo distant avec les version sauvegardées localement.
- Ces modifications seront stockées d’une manière permanente et ne peuvent pas être perdues.
- Ceci permet de rendre les modifications disponibles aux autres collaborateurs du projet.
Commandes:
• git push repo_distant [nom_de_la_branche] : synchroniser le repo distant avec le repo local, c.à.d, tous
les nouveaux commits locaux seront sauvegardés dans le repo distant. Le nom de la branche est
optionnel.
13
Pull
- L'opération Pull copie les modifications du repo distant au repo local.
- Les nouvelles modifications faites par nos collaborateurs sont téléchargées.
- Mettre notre projet à jour.
- Avant de faire un push, on doit synchroniser notre repo local (pull).
Commandes:
• git pull repo_distant [nom_de_la_branche] : synchroniser le repo local avec le repo distant, c.à.d, tous
les nouveaux commits distants seront téléchargés. Le nom de la branche est optionnel.
14
Head
- Le head est un pointeur qui fait référence à la version courante du projet (commit).
- Par défaut, le head pointe sur la dernière version du projet.
15
Branches
- Dans git, les branches permettent d’avoir des chemins séparés de versions.
- Chaque personne peut travailler sur sa propre branche et après on peut fusionner les branches.
- On peut consacrer une branche séparée pour chaque fonctionnalité.
16
Branches
- Dans git, les branches permettent d’avoir des chemins séparés de versions.
- Chaque personne peut travailler sur sa propre branche et après ils peuvent fusionner leurs versions.
- On peut consacrer une branche séparée pour chaque fonctionnalité.
17
Branches
Commandes:
• git branch nom_branche: créer une nouvelle branche à partir de la branche courante
• git checkout nom_branch: naviguer entre les branches
• git checkout –b nom_branche: créer une branche et naviguer vers cette branche
18
Clone
- L’opération clone permet de copier un repo distance dans le local.
- Si on veut collaborer sur un projet en utilisant git, la première étape consiste à faire un clone de ce
projet dans le local.
Commandes:
• git clone lien_vers_repo: faire une copie du repo distant dans le local
19
Démo
20
Installation et configuration
Installation du client git
[Link]
Configuration de votre identité sur git
$ git config --global [Link] «nom»
$ git config --global [Link] «email»
21
Création d’un répertoire github
Créer un repo sur github
22
Configurer le repo localement + 1er commit
23
Configurer le repo localement + 1er commit
24
Git log & Git status
25
Git add – stage & unstage
26
Git commit
27
Git push
28
Git push
29
Git clone
30
Git clone
31
Git show
32
Git diff
33
Modifier un commit
34
Modifier un commit
35
Git pull
36
Git merge
37
Git merge
38
Git stash
39
Git stash
40
Git stash
41
Git log -n
42
Git checkout commit
43
Git branch
44
Demo
45
Commit dans la nouvelle branche
46
Git push – nouvelle branche
47
Git merge branches
48
Git merge conflicts
49
Git merge conflicts
50
Git ignore
- Spécifier des fichiers et dossiers qu’on doit ignorer (ne les pas inclure dans le staging area ou dans le
commit).
- On crée un fichier .gitignore dans la racine et on spécifie les fichiers à ignorer (un fichier dans chaque
ligne).
51
Git avec SourceTree
52
Git avec intelliJ
53
Gitflow
- Gitflow est un modèle de branchement de Git (un standard).
- Ce workflow organise la manière don’t utilise les branches don’t git et favorise l’organisation et la
collaboration.
54
Gitflow
- À voir: Tutoriel gitflow
• Main: contient les versions officielles de l’application
• Feature: branches de fonctionnalités
• Develop: branche d’integration de fonctionnalités
• Hotfix: branche de maintenance (correction de bugs)
• Release: branche de livraison (preparer une livraison)
55
Pull request
56
IFT 1025 – Programmation 2
Démo 2
Initiation à Github
Oussama Ben Sghaier
[Link]@[Link]
13-03-2023