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