Skip to main content

Principes de git

Caractéristiques

Décentralisé

  • chaque développeur a une copie complète de l'historique
  • chaque développeur peut travailler en local
  • chaque développeur peut publier ses modifications

Fusion

  • chaque développeur peut travailler en parallèle
  • git gère les conflits lors de la fusion du code de plusieurs développeurs

Fonctionnement

Stockage des données

Stockage des données = objets :

  • blobs (fichiers, nommés par le sha de leur contenu, ou bien empaquetés dans des "packs")
  • trees (arborescence)
  • commits (instantanés = references vers des trees)
  • tags (étiquettes)

Organisation des données

Stocke les données sous forme de "snapshots" (instantanés) de l'ensemble du code via des références / liens entre les objets.

TODO: schema

3 états :

  • working directory : le code que vous modifiez
  • staging area : les modifications que vous avez préparées pour le prochain commit
  • repository : l'historique de tous les commits

TODO: diagrammes

En pratique

Installer git

Installation

Configuration

  • git config --global user.name "John Doe"
  • `git config --global user.email "john@example.com"

Rappels SSH

Connexion SSH

TP git classique

  • voir tp ISN
  • terminal only, fournir ssh pour éviter les emmerdes avec les installations
  • expliquer les états (working directory, staging area, repository) + les commandes pour passer de l'un à l'autre (add, commit, etc..)
  • expliquer les commandes de base (status, log, diff, etc..)
  • explorer les objets sur dépôt super simple fourni (2 fichiers, qqs commits, 1 tag, 2 branches) - git cat-file -p<hash> / git ls-tree <hash>
  • explorer les branches (checkout, merge, rebase, etc..)
  • push / pull : clef ssh ou login/mdp