Gestion de version ou « versionning » en jargon informatique
- Garder un historique complet : savoir qui a modifié quoi, quand et pourquoi.
- Revenir en arrière : restaurer une version antérieure d’un fichier ou d’un projet en cas d’erreur.
- Travailler à plusieurs : permettre à plusieurs personnes de modifier simultanément les mêmes fichiers sans s’écraser mutuellement.
- Créer des branches : développer de nouvelles fonctionnalités en parallèle, sans toucher à la version stable principale.
- Fusionner (merge) : réintégrer proprement le travail fait sur une branche distincte.
Présentation de l’outil GIT
- Auteur : Linus Torvalds (créateur du noyau Linux)
- Année de création : 2005 (1er commit le 7 avril 2005)
- Contexte : Rupture de la licence gratuite de BitKeeper, l’outil utilisé jusque-là pour gérer le noyau Linux
- Délai de développement : 10 jours pour créer la première version fonctionnelle (démarrée le 3 avril 2005)
- Mainteneur actuel : Junio Hamano (depuis le 26 juillet 2005)
- Version stable 1.0 : 21 décembre 2005
- Origine du nom : « Git » signifie « imbécile » en argot britannique (choix provocateur de Linus)
installation sur le poste étudiant sous linux.
Installation de l’outil git sur la machine client (étudiant)
adapter (mettre votre email pro de la section) et votre prénom et nom
# Installer Git sous Debian
sudo apt update
sudo apt install git -y
# Configurer git de l'utilisateur
git config --global user.name "Prénom NOM"
git config --global user.email "prenom.nom@etu.univ.fr"
git config --global init.defaultBranch main
git config --global core.editor "vi"
git config -l # pour vérifier la config ou git config --list
Il faut ensuite créer le dépôt distant sur linux3
Dans le répertoire ~/repos et ici tp1 , tp2
# Se connecter au serveur
ssh 1g1stuXX@linux3.local
#la branche par défaut sur le serveur
git config --global init.defaultBranch main
# Créer le dossier des dépôts
mkdir -p ~/repos
cd ~/repos
# Créer un dépôt "nu" pour chaque TP
git init --bare hello-git.git
git init --bare tp1.git
git init --bare tp2.git
# Déconnecter
exit
Lançons un projet « Bonjour le monde » en C
dans ~/Works créer le répertoire tp1
mkdir ~/Works/hello-git
cd ~/Works/hello-git
initialiser le git ! (pour utiliser git dans notre projet)
git init
etudiant@ordi:~/Works/hello-git$ git init
Dépôt Git existant réinitialisé dans /home/etudiant/Works/hello-git/.git/
etudiant@ordi:~/Works/hello-git$
un répertoire caché .git est installé dans votre répertoire pour que git puisse gérer votre projet
on va y mettre un code c avec vi de préférence.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World!\n");
return EXIT_SUCCESS;
}
compilation avec gcc de notre code
gcc hello.c -o hello
./hello
Hello World!
etudiant@ordi:~/Works/tp1$
# Voir ce qui a été créé
git status
on obtient
Sur la branche master
Aucun commit
Fichiers non suivis:
(utilisez "git add <fichier>..." pour inclure dans ce qui sera validé)
hello
hello.c
aucune modification ajoutée à la validation mais des fichiers non suivis sont présents (utilisez "git add" pour les suivre)
# Ajouter le fichier au versionnement
git add hello.c
# Valider (premier commit)
git commit -m "Ajout de hello.c - programme Hello World"
on obtient
[master (commit racine) 98ce721] Ajout de hello.c - programme Hello World
Lier su dépôt distant sur linux3.local (au lycée)
git remote add origin ssh://AgGstuXX@linux3.local:/home/AgGstuXX/repos/hello-git.git
- A : année 1 ou 2
- G : groupe 1 ou 2
- XX : poste de 00 à 14
Envoyer le code sur le serveur
git push -u origin main
Dans un autre répertoire on va cloner le projet
on peut dans /tmp .. par exemple , c’est juste pour tester ! on effacera ensuite
git clone AgGstuXX@linux3.local:/home/AgGstuXX/repos/hello-git.git
On retourne dans notre projet
on va ajouter un fichier README
on peut vérifier le remote
git remote -v
origin ssh://AgGstuXX@linux3.local:/home/AgGstuXX/repos/hello-git.git (fetch)
origin ssh://AgGstuXX@linux3.local:/home/AgGstuXX/repos/hello-git.git (push)
avec vi créer le fichier README
Texte dans le fichier README
pour tester
git add . # ou git add README
puis commit ! (valider)
git commit -m "ajout du fichier README"
et on pousse le git sur linux3
git push origin main
la sauvegarde du git mise à jour, vous allez vérifier en recommençant le clone dans le répertoire /tmp
Vous disposez d’un git de votre projet
Utilisation de git
Nous allons imaginer que du temps c’est passé !! et que vous avez envie de récupérer votre projet et le modifier
cd ~/works
rm hello-git -rf #on supprime le projet .. le temps à passé !
puis … des années plus tard on récupère le clone
git clone AgGstuXX@linux3.local:/home/AgGstuXX/repos/hello-git.git
Avec git clone, on retrouve notre projet exactement comme on l’avait laissé.
c’est l’intérêt de git !
modifions notre projet
on va modifier le fichier README (vi ou autre pour modfier )
cd hello-git.git
echo "ajout d'une ligne dans le fichier README" >> README
git add README
Et on valide (commit)
git commit -m "Correction du README"
et on repousse dans le git
git push
on peut préciser
git push origin main
