Skip to content

Latest commit

 

History

History
409 lines (265 loc) · 11.8 KB

presentation-git.md

File metadata and controls

409 lines (265 loc) · 11.8 KB
author title date
Nicolas Borboën <<[email protected]>>
Introduction à Git
February 15, 2021

Qu'est-ce que Git ?

Git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence GPLv2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes.

Git, https://fr.wikipedia.org/wiki/Git

Shhh, these are your private notes 📝
  • First use s for speaker view
  • Use ctrl+click to zoom
  • Use b and slide go black
  • Use esc to view all slide

Pourquoi utiliser Git

comit_Strip{ width=55% }

Git est un logiciel de gestion de versions décentralisé.

{ width=60% class=border }

Décentralisé vs centralisé

{ width=65% }

SVN, CVS, Perforce (centralisés) vs Git, Mercurial, Bazaar (décentralisés)

Fonctionnement

Le seul dossier un peu particulier créé par Git est un dossier .git (c’est un dossier caché situé à la racine du projet). Il contient l’historique des modifications des fichiers et la configuration de Git pour ce projet.

https://openclassrooms.com/fr/courses/1233741-gerez-vos-codes-source-avec-git

Utilisation locale

La plupart des opérations de Git ne nécessitent que des fichiers et ressources locaux [...] Git vous fera penser que les dieux de la vitesse ont octroyé leurs pouvoirs à Git.

Rudiments de Git (git-scm.com)

Les tripes de Git

  • objects: stockage du contenu
  • tree: répertoire
  • blob: fichier (Binary Large OBject)
  • commit: instantané
  • tag: une étiquette pointant toujours sur un même commit
  • refs: méchanisme interne pour représenter les branches et les tags

https://git-scm.com/book/fr/v1/Les-tripes-de-Git-Les-objets-Git

Utilisation (pour démarrer)

  • Initialisation d’un dépôt Git dans un répertoire existant
    $ git init

  • Récupération d'un dépôt distant dans un dépôt local
    $ git clone $URI

https://git-scm.com/book/fr/v2/Les-bases-de-Git-Démarrer-un-dépôt-Git

Utilisation (modifications dans le dépôt)

  • Placer de nouveaux fichiers sous suivi de version
    $ git add .
  • Valider vos modifications
    $ git commit
    • il ne concerne qu'une chose et une seule ;
    • il est le plus petit possible (tout en restant cohérent) (atomique).

https://git-scm.com/book/fr/v2/Les-bases-de-Git-Enregistrer-des-modifications-dans-le-dépôt

Utilisation (état)

https://git-scm.com/book/fr/v2/Les-bases-de-Git-Visualiser-l'historique-des-validations

Utilisation (avec d'autres personnes)

  • Envoyer ses modifications sur un serveur
    $ git push
  • Récupérer des modifications depuis un serveur
    $ git pull

https://git-scm.com/book/fr/v2/Les-bases-de-Git-Visualiser-l'historique-des-validations

Branches

{ width=50% }

  • Une branche n'est qu'une étiquette qui pointe vers un commit.
  • Elle permet d'avoir facilement des environnements de développement séparés (feature, bug fix).
  • Changer de branche modifie les fichiers dans votre répertoire de travail.

https://git-scm.com/book/fr/v1/Les-branches-avec-Git-Travailler-avec-les-branches

Utilisation (flow)

L'utilisation des branches peut être liée à des bonnes pratiques, par exemple :

Utilisation (conflits)

Lors qu'un fichier est modifié par un autre utilisateur, ou que vous voulez fusionner deux branches, il arrive qu'il soit nécessaire de résoudre des conflits.

Afin de pouvoir résoudre les conflits visuellement, il existe des outils adéquats, par exemple Meld. Pour définir l'outil utilisé pour résoudre les conflits, utiliser la commande: $ git config merge.tool meld

Résumé

Git de survie

git init / git clone

git add, git commit

git status / git diff / git log

git push / git pull

États

Relevant xkcd

{ width=35% } https://xkcd.com/1597/

Plateforme d'hébergement Git

Bien que l'utilisation de Git puisse être fait indépendament d'un service d'hébergement, ces derniers apportent des fonctionnalités pratiques, notamment dans le cadre du travail en équipe.

Fonctionalités

  • visualisation des fichiers et des commits
  • édition en ligne
  • forks / pull request / merge request
  • issue tracker
  • CI/CD
  • wikis
  • social network pour développeurs

Plateforme les plus connues

GUI

Git est fait pour être utilisé en ligne de commande. Cependant, il existe plusieurs interface graphique pour l'utiliser :

IDE

Git est intégrés à des IDE/éditeurs :

Extras

Les programmes comme Git Extras ou gh cli permettent de gagner beaucoup de temps.

Pratique

Installation

  1. Installation git doc
  2. Configuration de l'utilisateur doc
    $ git config --global user.name "John Doe"
    $ git config --global user.email [email protected]

Pratique : initialiser un repo

  • Créer un dépôt local $ git init dans un répertoire
  • Manipulation:
    • création fichier, édition fichier ;
    • $ git add fichier "Staging aera"
    • $ git commit -m "mon message de log" fichier "Repository aera"
  • Utiliser $ git status entre les étapes

Pratique : Créer un conflit

  • Modifier un fichier et le commiter
  • Création d'une branche sur le répertoire courant et switcher dessus $ git checkout -b maBranche
  • Editer les mêmes lignes du fichier dans la branche et le commiter
  • Retrouner sur la branche master : $ git checkout master
  • Fusionner maBranche dans master : $ git merge maBranche
  • Identifier le conflit avec $ git status
  • Résoudre le conflit, par exemple avec Meld

Pratique (conflits)

~/gitTest(branch:master) » git merge maBranche
Auto-merging fichier
CONFLICT (content): Merge conflict in fichier
Automatic merge failed; fix conflicts and then commit the result.
  • Ouvrir l'outil de résolution de conflits : $ git mergetool
  • Résoudre les conflits (le fichier central est le fichier final)
  • Utiliser $ git add fichier et $ git commit -m"Merge" -> conflits résolus

Pratique (conflits)

Utiliser une commande pour voir le graph des commits, par exemple :

  • $ git log --graph ou
  • $ git log --graph --oneline --decorate --all

Conclusion

Ressources [1]

Ressources [2]

Ressources [3]

Ressources [4]

Ressources [6]

Ressources [7]

Ressources [8]

À propos

Cette présentation a été faite dans le cadre des dojos de programmation pour les apprentis informaticiens de l'EPFL. La source est disponible sur le dépot gitro — une petite introduction à Git https://github.com/epfl-dojo/gitro. Elle est écrite en MarkDown, puis convertie en HTML avec Pandoc (et reveal.js).

<style> .reveal h1 { font-size: 2em; } .reveal h2 { font-size: 1.6em; } .reveal h3 { font-size: 1.4em; } .reveal h4 { font-size: 1.2em; } .reveal h5 { font-size: 1.1em; } .border { border: 1px solid #555; } .reveal blockquote { width: 100% } .reveal blockquote:before { display: block; padding-left: 10px; content: "\201C"; font-size: 80px; position: absolute; left: -20px; top: -20px; color: #7a7a7a; } .reveal cite:before { content: "\2009 \2015 \2009"; } .reveal cite { font-size: 80%; } .reveal code { background-color: #eee; border-radius: 3px; font-family: courier, monospace; padding: 0 3px; font-size: 0.8em; } </style>