Intro à git

Romain Tavenard

Présentation de git

  • Système de gestion de versions
  • Pensé pour être distribué
  • Développé à la base pour gérer la codebase du noyau linux

Pourquoi utiliser git ?

  • Tous types de fichiers
    • Code (quel que soit le langage)
    • Données (attention aux volumes)
    • Orienté fichiers texte (basé diff)
  • Gestion de versions
    • Revenir en arrière (bourde)
    • Garder trace de versions intermédiaires (jalons)
  • Sauvegarde
    • Services en ligne : GitHub, GitLab, …
    • Plusieurs dépôts pour un même projet

Les dépôts

  • 1 dépôt par machine
  • pas de dépôt primaire / secondaire
  • en pratique il y a souvent un dépôt de référence
    • exemple : dépôt GitHub, GitLab, etc.
    • habituellement appelé origin
  • Scénario 1
    • un dépôt local pour gestion de versions sans sauvegarde
    • un dépôt local + dépôt GitHub pour sauvegarde pérenne

Utilisation de git
Scénario 1

  • Gestion de versions et sauvegarde
  • Opérations nécessaires
    • Initialiser un projet git
    • Lister les fichiers suivis
    • Créer un point de sauvegarde local
    • Synchroniser le contenu des différents dépôts d’un même projet

Opérations git de base

80pwidth 

Interagir avec un dépôt distant

  • 2 cas de figure
    • On a débuté le développement en local puis on veut sauvegarder sur GitHub: git init + git remote add
    • On récupère du code disponible sur GitHub: git clone (pas besoin d’ajouter le remote dans ce cas)

git init

Initialiser un dépôt git dans le dossier courant :

git init .

git remote add

  • Ajouter un dépôt (=une copie) distant
git remote add origin https://URL_DU_REPO_DISTANT.git
  • Ici le dépôt se voit attribuer le nom origin
    • Convention standard, mais pas d’obligation dans le nommage

git clone

Cloner un dépôt distant :

git clone http://url_depot_distant.git

git add

  • Ajouter un ou plusieurs fichiers à la liste des fichiers à suivre dans le dépôt :
git add mon_fichier.ext *.txt autre_truc.md src/

git commit

  • Créer un commit (point de sauvegarde) avec les dernières modifications du/des fichiers suivis :
git commit nom_du_fichier -a -m "Message associé au commit, décrivant son contenu"

git push

git push origin main
  • origin : nom du dépôt distant
  • main : nom de la branche à envoyer

git pull

git pull origin main
  • origin : nom du dépôt distant
  • main : nom de la branche à récupérer

Pour savoir où on en est

  • Voir l’état actuel du dépôt local
git status
  • Voir un historique des commits disponibles dans le dépôt local
git log

.gitignore (1/2)

  • Permet d’ignorer certains fichiers
    • Fichier ignoré = jamais inclus dans un commit
  • Fichiers à ignorer
    • Fichiers temporaires
    • Fichiers générés par exécution d’un script
    • Fichiers contenant des identifiants (credentials)

.gitignore (2/2)

  • Structure du fichier .gitignore
    • 1 ligne par règle
poly.aux  # Ignorer un fichier unique
*.bbl     # Ignorer tous les fichiers correspondant au pattern
build/    # Ignorer un dossier et tout ce qu'il contient

Voyage dans le temps : retour au dernier commit

  • Pour annuler tous les changements depuis le dernier commit :
git restore .  # `.` = dossier courant
  • Pour annuler les changements sur un fichier en particulier :
git restore <NOM_DU_FICHIER>

Voyage dans le temps : retour à un autre commit

Pour revenir au commit <COMMIT_ID> :

git revert --no-edit <COMMIT_ID>..HEAD

Pour connaître le <COMMIT_ID> :

git log