Git est un outil de versionning
Chaque modification équivaut à une nouvelle version du projet
Une modification est appelée commit
Il existe des logiciels permettant d'utiliser Git, mais nous allons apprendre à l'utiliser en lignes de commande
Ces commandes doivent être exécutées dans un terminal
Pour les Macs
Recherchez l'application Terminal
Celui-ci fonctionne avec les commandes Unix que nous allons voir plus tard
Alternatives :
Sur PC
Plusieurs options
En français Invite de Commandes
Il s'agit du terminal historique de Windows
Peu pratique
Les commandes Unix ne fonctionnent pas
Il s'agit du nouveau terminal Windows
Plus pratique et supporte les commandes Unix
Pourra être installé avec Git
Supporte les commandes Unix
Téléchargeable: cmder.net
Support des commandes Unix
Sur PC et Mac
Alternativement, si vous utilisez VSCode, vous pouvez utiliser le terminal intégré
Faites CMD + J pour le faire apparaître
Ce terminal utilise en réalité une des différentes options vues précédemment, mais l'intégration à l'éditeur le rend plus pratique
Nous n'allons voir qu'une petite partie des commandes unix séparées en 3 groupes
pwd
ls
cd ./dossier-1/dossier-2
cd dossier-1/dossier-2 # même qu'au dessus
cd ../..
clear
man clear
open ./
open dossier-1
say -v Thomas "Coucou la famille"
Git fonctionne depuis le terminal
Pour savoir si git est déjà installé, ouvrez le terminal et tapez git --version
Si la version s'affiche, passez l'étape d'installation
À la fin, vous pouvez choisir de lancer Git Bash
Un projet git est appelé repository ou juste repo
Il est possible d'avoir un repo uniquement sur son ordinateur, mais on perd l'intérêt de Git qui est aussi de sauvegarder nos données et de travailler à plusieurs
Il nous faut donc un hébergeur Git en ligne
Nous allons utiliser GitHub
GitHub est plus qu'un hébergeur Git
Il existe différentes offres, mais la version gratuite devraient amplement vous suffire
Alternatives
Allez sur github.com et créez-vous un compte
⚠️ Retenez bien votre pseudo, votre email et votre mot de passe
Pour connecter Git à votre compte github
git config --global user.name "votrepseudo"
git config --global user.email "votre@email"
Cette configuration sera valable pour tous vos repo sur l'ordinateur
git clone https://url-de-votre-repo
cd esin-e1-p2026-test # par exemple
git clone permet de récupérer un repo en local
Actuellement le dossier est vide, mais si d'autres développeurs ou nous-même avions commencé à travailler dessus, on aurait récupérer les fichiers
Le dossier nouvellement créé contient un dossier .git (invisible sur mac)
Ce dossier contient la configuration ainsi que l'historique de votre projet (actuellement pas grand chose)
Ne touchez jamais au contenu de ce dossier
Maintenant que nous avons le repo en local, nous voulons commencer à travailler dessus
Comme première modification, nous allons simplement créer un fichier index.html
Astuce
La commande git status permet de lister le(s) fichier(s) modifié(s)
La commande git diff index.html permet de lister les modifications dans le(s) fichier(s)
(ne fonctionne pas avec un fichier pas encore versionné)
Lorsque nous avons créé le fichier index.html, celui-ci était untracked. Il ne fait pas encore parti du repo.
La commande git add index.html permet d'indiquer que le fichier est maintenant staged
Ce fichier sera enregistré dans git au prochain commit
Il est possible d'envoyer plusieurs fichiers en même temps
La commande git commit ... permet de créer le commit
Tous les fichiers stagés vont faire parti de ce commit
Il faut donc rajouter une description à notre commit pour expliquer ce qu'il apporte
Tapez git commit -m "Create home page"
-m permet de renseigner directement le message associé au commit
Nous pouvons désormais envoyer notre commit sur le serveur
Tapez git push
À cette étape, le terminal devrait vous demander de vous authentifier
Choisissez "Web browser" en appuyant sur la touche 1
Cela devrait ouvrir une page web vous permettant d'autoriser Git Credential Manager
Rendez-vous sur le repo pour découvrir votre commit avec le fichier index.html
Ceci était un workflow classique lorsqu'on travaille seul sur le projet
Même si votre repo est publique, d'autres développeurs ne peuvent le modifier sans votre accord
Pour autoriser un autre développeur à faire des modifications, il faut l'ajouter dans les collaborateurs
Le développeur doit accepter l'invitation
Il peut maintenant récupérer le projet git clone https://github.com/brunosimon/esin-e1-p2026-test.git
Et faire des commits
Pour récupérer les modifications faites par les autres développeurs, taper git pull
Avant de pusher notre commit, si un autre développeur a déjà envoyé un commit, git rejettera notre push
Nous allons commencer par récupérer les modifications avec git pull
⚠️ Il ne doit pas y avoir de modifications non commités
Deux cas peuvent se produire
Si d'autres fichiers ont été modifié entre-temps et qu'il n'y a pas de conflit, l'éditeur vi va apparaître avec un contenu pré rempli
La première ligne correspond à la description du commit
Si vous souhaitez modifier la description, appuyez sur la touche i (insert)
Pour quitter le mode insert, appuyer sur CTRL + C
Pour sauvegarder tapez :wq et faites ENTRER
Un nouveau commit qu'on appelle merge vient d'être créé automatiquement
Vous pouvez envoyer les commits serainement avec git push
Si un développeur a modifié le même fichier que vous, il va falloir choisir quelle modification conserver
Git ne peut décider à votre place quel commit choisir. Vous allez devoir le résoudre vous-même
Dans l'exemple qui suit, nous avons décidé d'ajouter une liste de nombres, mais un autre développeur a décidé de rajouter une liste de lettres
Lorsque nous avons fait le git pull, git a modifié le code afin de faire apparaître les deux commits
Certains éditeurs intègrent des solutions pour résoudre les conflits conflits (VSCode)
La partie <<<<<<< HEAD correspond à notre code
L'autre partie correspond au code de l'autre développeur
La résolution de conflits est la partie la plus difficile à maîtriser
Il faut faire preuve de rigueur et d'organisation dans la team
Astuce
Faites un git pull avant de commencer à travailler pour vous assurer d'avoir la dernière version du projet
Vous avez compris l'essentiel du workflow git
Un readme est un fichier descriptif accompagnant un projet
On peut le retrouver dans des sous-dossiers, mais il est en général à la racine
Son contenu apparaît directement sur le repo
Soignez vos readme
Plusieurs noms possibles
Informations qu'on peut retrouver dans un readme
Le readme peut être écrit en markdown
Markdown est un language de formatage
Nous allons pouvoir créer des titres de différentes tailles, des tableaux, des images, du code, des listes, etc.
Lorsque vous mettez à disposition des autres un projet, vous souhaitez probablement garder un certain contrôle sur son utilisation ou au moins sur sa paternité
Cela est possible grâce aux licenses
Le site choosealicense.com, créé par GitHub, vous permet de choisir une license et vous accompagnera dans sa mise en place
Une des plus répandues est la license MIT dont voici une explication ligne par ligne
Une autre connue est CC0 permettant de dédiée l'oeuvre au domaine public
Vous pouvez à tout moment décider de passer votre repository en privé pour ensuite ajouter des collaborateurs qui auront le droit de travailler dessus
Il est possible d'indiquer à git d'ignorer certains fichiers afin qu'ils ne soient pas commités
Pour cela, créez simplement un fichier .gitignore à la racine du projet
Chaque ligne de se fichier correspond à une règle
fichier.txt | fichier.txt partout dans le projet |
/fichier.txt | fichier.txt à la racine |
/toto/fichier.txt | fichier.txt dans le dossier toto |
toto | dossier toto partout dans le projet |
/toto | dossier toto à la racine |
/toto/** | tous les fichiers dans le dossier toto |
*.txt | tous les fichiers .txt |
/toto/**.txt | tous les fichiers .txt dans le dossier toto |
Le site gitignore.io permet de générer facilement ces fichiers
Si vous venez de stagé des fichiers (sans commit), mais que vous souhaitez annuler, tapez simplement git reset
Cela ne va pas annuler vos modifications
Si vous venez de faire un commit (sans push), mais que vous souhaitez le modifier, vous pouvez utiliser amend
Exemple: git commit --amend -m "Pwet" va réécrire le message de commit
Pour afficher les commits, tapez git log
Pour les afficher en version plus simple, tapez git log --oneline
Pour les afficher en version plus simple avec les branches, tapez git log --oneline --graph
Si vous avez apporté des modifications que vous souhaitez annuler, vous pouvez utiliser checkout
Exemple: git checkout index.html
⚠️ Vous perdrez vos modifications
Checkout permet aussi de revenir à un ancien commit (une ancienne version du projet)
Nous allons avoir besoin de connaître le hash correspondant au commit
Nous pouvons récupérer les hash dans les commits sur Github ou alors grâce à git log
Il suffit ensuite de taper git checkout XXXXXXX
Pour revenir à la dernière version, taper git checkout master
master correspondant à la branche (???)
Si vous avez fait une fausse manipulation, mais que vous ne savez pas quoi faire pour réparer l'erreur, faites une recherche. Ne risquez pas d'empirer la situation.
Il peut arriver d'avoir une modification complexe à apporter qui risquerait de créer trop de conflits avec les autres développeurs
Git permet de créer des branches
Cela revient à créer une copie du projet à un instant T et de pouvoir faire des modifications sur chacune des deux branches sans rentrer en conflit
Une fois la modification terminée, on peut merger les branches en résolvant les éventuels conflits
Créer une branche et passer dessus
git branch | lister les branches |
git branch toto | créer une branche toto |
git switch toto | passer sur cette branche |
Faire un commit
modifier un fichier | |
git push -u origin toto | pusher sur la branche toto (-u permet d'en faire la branche par défaut) |
Merger les modification
git switch master | retourner sur la branche master |
git merge toto | fusionner la branche toto sur la branche master |
git push | pusher sur la branch master |
Supprimer la branche
git branch -d toto | supprimer la branche en local |
git push origin --delete toto | supprimer la branche en remote (sur GitHub) |
Pour récupérer la branche "toto" créée par un autre développeur, tapez git fetch origin toto
cd ./dossier | Navigue dans les dossiers |
ls | Liste les fichiers/dossiers |
pwd | Affiche la position actuelle |
git clone http://... | Récupère un repo en local |
git pull | Récupère les derniers commits |
git add ... | Stage les fichiers modifiés en vue de faire un commit |
git status | Liste le(s) fichier(s) modifié(s) |
git diff ... | Liste les lignes modifiées dans le(s) fichier(s) modifié(s) |
git reset | Annule le staging |
git commit -m "..." | Crée un commit |
git push | Envoie le commit |
git checkout ... | Annule les modifications |
Git est indispensable pour la pérennité de vos projets que ce soit pour des projets perso ou en équipe
Faites-en bon usage