Introduction à Git et GitHub
Contenu inspiré de [Link] (© Thibault Clérice, publié sous licence CC BY)
Copyright © 2020-2022 Pier-Luc Brault.
Cette présentation est mise à disposition selon les termes de la
Licence Creative Commons Paternité - Partage des Conditions Initiales à l'Identique 4.0 International.
Contenu
●
Git
●
C’est quoi?
●
Les bases
●
Les branches
●
Travailler avec un serveur distant
●
GitHub
●
C’est quoi?
●
Les Pull Requests
2
Git >> C’est quoi?
3
Git, c’est quoi?
●
Git = Logiciel de gestion de versions
●
Logiciel libre et gratuit
●
Permet de
●
Conserver l’historique des modifications aux fichiers d’un
projet
●
Revenir en arrière (annuler des modifications)
●
Gérer en parallèle plusieurs versions d’un projet et les
fusionner (idéal pour la collaboration)
4
Historique
●
Créé en 2005 par Linus Torvalds (créateur du
noyau Linux)
●
Présentement à la version 2
Photo par Krd et Von Sprat sur Wikimedia
(Licence CC BY-SA 4.0)
5
Quelques logiciels concurrents
●
SVN
●
CVS
●
Mercurial
6
Git >> Les bases
7
Utilisation
●
Traditionnellement utilisé en ligne de
commande
●
Il existe aussi des outils graphiques, ex:
●
GitKraken
●
GitHub Desktop
●
SourceTree
8
Les dépôts
●
Un projet Git est appelé un dépôt (repository
en anglais, repo pour les intimes)
●
Concrètement, un dépôt est un répertoire
●
contenant des fichiers (typiquement de code source)
●
dont l’historique des modifications est géré par Git
9
Créer un dépôt
La commande « git init » permet d’initialiser un
dépôt dans un répertoire (vide ou non)
10
Les commits
●
Pour qu’une modification soit « sauvegardée »
par Git, elle doit être ajoutée à l’historique par
un « commit »
●
Un commit...
●
Est identifié par un message composé par l’utilisateur
(commit message)
●
Peut comporter des modifications à plusieurs fichiers
11
États des fichiers
●
On distingue trois « états » des fichiers
●
un état de travail: le fichier a subi des modifications, mais n’a
pas encore été ajouté à un futur commit
●
un état de futur enregistrement (staging): le fichier a été
identifié comme devant être ajouté au prochain commit
●
un état archivé : toutes les modifications apportées au fichier
ont été « commitées »
État de travail Staging État archivé
Nouvelles modifications Nouvelles modifications Toutes les modifications
non ajoutées à un futur sélectionnées pour le ont été « commitées »
commit prochain commit
12
Ajouter une modification
La commande « git add » permet d’ajouter un
fichier au prochain commit (donc de mettre le
fichier en staging)
13
Consulter l’état du dépôt
La commande « git status » affiche l’état des
modifications non « commitées » (« stagées » ou non)
14
Ajouter un commit
La commande « git commit » permet de créer un
nouveau commit. Il faut utiliser l’option -m pour
indiquer le message à associer au commit.
15
Ajout automatique des fichiers modifiés
(git commit -a)
16
Consulter l’historique du dépôt
La commande « git log » permet d’afficher
l’historique du dépôt
17
Tableau-synthèse des commandes de
base
Description Commande
Créer un dépôt git init
Ajouter une modification au prochain commit git add <NOM DU FICHIER>
(Astuce: utiliser git add --all pour ajouter toutes
les modifications non « stagées »)
Consulter l’état du dépôt git status
Ajouter un commit git commit -m "MESSAGE"
L’option -a permet d’ajouter toutes les
nouvelles modifications automatiquement
(mais pas les nouveaux fichiers)
Consulter l’historique du dépôt git log
18
Git >> Les branches
19
Les branches
●
Les branches permettent de gérer en parallèle
plusieurs versions d’un dépôt
●
Créer une branche, c’est donc un peu comme
utiliser la fonction « Sauvegarder sous » d’un
logiciel
●
Sauf qu’on peut plus facilement fusionner
deux versions (branches) par la suite!
20
Exemple visuel
Commit de
Commit Commit Commit
Commit3 Commit Commit
Branche A Fusion
Création de la
branche B à Fusion de
partir d’un la branche
commit de la B dans la
branche A branche A
Branche B Commit Commit Commit
Commit3
21
Branche principale et utilité des
branches
●
La branche par défaut s’appelle master
●
Tendance depuis 2020 à renommer cette branche en « main »
pour éviter la référence à l'esclavage
●
Les branches permettent de travailler sur
différents problèmes en parallèle
●
Possibilité de travailler sur des problèmes différents en même
temps et de changer de tâche rapidement
●
Ex:
●
La branche main qui contient les fonctionnalités stables du logiciel
●
La branche fonctionnalite1 pour travailler sur le développement de la
fonctionnalité 1
●
La branche bogue1 pour travailler sur la résolution du bogue 1
22
Créer une branche
La commande « git branch » permet de créer
une nouvelle branche à partir du dernier commit
de la branche courante
23
Se déplacer dans une branche
La commande « git checkout » permet de se
déplacer dans une branche existante
24
Fusionner une branche
La commande « git merge » permet de fusionner
une autre branche dans la branche courante
25
Git >> Travailler avec un serveur
distant
26
Travailler avec un serveur distant
●
Git est décentralisé
●
C’est-à-dire que tous les utilisateurs contribuant à un dépôt
possèdent une copie complète de celui-ci sur leur poste, avec
tout l’historique des commits
●
Pour que plusieurs utilisateurs puissent
collaborer ensemble, il faut qu’un serveur
distant maintienne lui aussi une copie du dépôt
27
Récupérer un dépôt distant
●
Pour contribuer à un dépôt, on doit d’abord
cloner celui-ci depuis le serveur qui l’héberge
●
On travaille ensuite localement en créant des
branches et des commits à volonté
Copie du dépôt
Copie locale
sur un serveur
du dépôt
distant Clonage
28
Mettre à jour une branche distante
●
Pour partager ses modifications, on doit
effectuer un push d’une branche locale vers le
serveur distant
Copie du dépôt
Copie locale
sur un serveur
du dépôt
distant
Branche Branche
Push
29
Mettre à jour une branche locale
●
Pour récupérer les modifications effectuées par
autrui, on doit effectuer un pull d’une branche
du serveur distant vers le dépôt local
Copie du dépôt
Copie locale
sur un serveur
du dépôt
distant
Branche Branche
Pull
30
Commandes
●
Les commandes permettant d’effectuer ces
opérations seront couvertes dans l’exercice
31
GitHub, c’est quoi?
32
GitHub, c’est quoi?
●
Hébergeur de dépôts Git (serveur distant)
●
Interface Web permettant de visualiser les dépôts
●
Permet de gérer l’accès aux dépôts (utilisateurs
autorisés en lecture et en écriture)
●
Gestion de bogues et de tickets (GitHub Issues)
●
Gestion de fusion de branches et de revue de code
(code review)
33
Principaux concurrents
●
GitLab
●
Bitbucket
34
GitHub >> Les Pull Requests
35
Les Pull Requests
●
Les bonnes pratiques veulent qu’on ne travaille
jamais directement sur la branche principale
●
Lorsqu’on est prêt à fusionner notre branche
dans la branche principale, on effectue un Pull
Request via GitHub
36
Les Pull Requests
●
Les autres contributeurs du dépôt sont alors en
mesure d’effectuer une revue de code
●
Une fois le Pull Request approuvé, la branche
correspondante peut être fusionnée
directement via l’interface Web
37
Fin de la présentation
Des questions?
Photo par Emily Morter sur Unsplash
38