Aller au contenu principal

Apprendre Git

info

Cette documentation est en cours d'écriture, donc soyez indulgent pour le moment. Je compte ajouter du contenu régulièrement pour le rendre de qualité.

logo git

Git est l'outil de gestion de versions de code le plus populaire et largement utilisé dans le développement des infrastructures informatiques. Le but de cette documentation est de vous donner les bases pour vous débrouiller dans votre travail de tous les jours.

L'histoire de Git

Git est un système de contrôle de version distribué open source. Il est disponible sur presque tous les systèmes d'exploitation.

En 2005, Linus Torvalds a créé git en tant que système de contrôle de version distribué alors parce qu'il ne pouvait plus utiliser BitKeeper gratuitement.

Désormais, git est le système le plus utilisé par les développeurs. Sa nature distribuée facilite le développement, le suivi et la bonne collaboration avec les modifications de code.

Git dans le domaine du DevOps ?

Un consultant DevOps devra développer du code et de ce fait le stocker. Il se doit donc maîtriser Git pour stocker ses codes sources :

Les Concepts Clés de Git

Dans cette section, nous allons aborder tous les concepts et mots clés qui vous aideront à progresser.

Système de contrôle de version distribué

Chaque développeur possède une copie complète de l'historique du projet, ce qui permet de travailler localement.

Dépôts (Repositories)

Les dépôts, souvent appelés "repos" en abrégé, est essentiellement une base de données qui stocke toutes les versions de votre projet, ainsi que l'historique complet des modifications. Il existe deux types principaux de dépôts Git.

Dépôt distant

Un dépôt distant est une copie du projet qui est hébergée sur un serveur distant. Les dépôts distants facilitent la collaboration entre plusieurs développeurs. Le dépôt distant peut être accessible en lecture et en écriture par plusieurs personnes, ce qui permet de partager le code, de travailler ensemble et de synchroniser les modifications. Des services tels que GitHub, GitLab et Bitbucket offrent des options d'hébergement de dépôts Git.

Dépôt local

Un dépôt local est une copie de votre projet stockée sur votre propre machine. Chaque développeur travaillant sur le projet aura son propre dépôt local. Cela permet à chacun de travailler indépendamment, d'effectuer des modifications, d'enregistrer des commits et d'explorer l'historique sans avoir besoin d'une connexion Internet.

Historique enregistré

Git enregistre l'historique complet des modifications apportées au code source, ce qui permet de suivre chaque modification, quel que soit le moment où elle a été effectuée.

Collaboration

Git facilite la collaboration entre plusieurs développeurs. Plusieurs personnes peuvent travailler sur le même projet simultanément en utilisant des branches distinctes.

Branches

Les branches est un concept central de Git. Elles permettent de travailler sur des fonctionnalités ou des correctifs de manière isolée sans affecter la branche principale (généralement appelée "master" ou "main").

Commit

Les commits sont la pierre angulaire de Git et sont utilisés pour enregistrer l'historique des modifications d'un projet. Un commit est un instantané (snapshot) de l'état d'un projet à un moment donné. Plus précisément, un commit représente une série de modifications apportées aux fichiers d'un projet à un moment précis, accompagnée d'un message descriptif qui les explique.

Grâce aux commits, il est possible de revenir en arrière et de restaurer le projet à un état antérieur en sélectionnant un commit précédent. Cela permet de résoudre les problèmes, de revenir à une version stable ou de réappliquer des modifications précédemment supprimées.

Les différentes URL git

A venir...

Installation de Git

Pour commencer à utiliser Git, vous devez d'abord l'installer sur votre système. Heureusement, Git est compatible avec différentes plates-formes, notamment Windows, macOS et Linux. Voici comment vous pouvez l'installer :

Installation de Git sous Windows

Je vous conseille de télécharger le package d'installation pour Windows à partir du site officiel de Git (https://git-scm.com/download/win) et de suivre les instructions d'installation.

Installation de Git sous macOS

Sur macOS, Git est habituellement préinstallé. Vous pouvez vérifier s'il est déjà installé en ouvrant le Terminal puis en exécutant la commande git --version. Si ce n'est pas le cas, vous pouvez installer Git via un gestionnaire de paquets tel que Homebrew.

Installation de Git Sous Linux

Sur la plupart des distributions Linux, vous pouvez installer Git à l'aide du gestionnaire de paquets.

Par exemple, sur un poste Ubuntu :

sudo -i
add-apt-repository ppa:git-core/ppa
apt update
apt install git

Les principales commandes git

Configuration de Git

La configuration de git pour l'utilisateur se trouve dans le dossier ~/.gitconfig ou ~/.config/git/config. Pour éviter de véroler ce fichier de config, on fait appel à la commande git config:


Par exemple pour définir la branche par défaut :

git config --global init.defaultBranch main

Pour retrouver les valeurs des configs actuelles :

git config --list
file:/home/bob/.gitconfig user.name=Stéphane ROBERT
file:/home/bob/.gitconfig user.email=stephane.robert.28@gmail.com
file:/home/bob/.gitconfig core.editor=code --wait
file:/home/bob/.gitconfig init.defaultbranch=main
file:.git/config core.repositoryformatversion=0
file:.git/config core.filemode=true
file:.git/config core.bare=false
file:.git/config core.logallrefupdates=true

Plus d'infos ici

Première configuration après installation

Une fois Git installé, vous devez le configurer. Les premiers paramètres à définir sont votre nom d'utilisateur et votre adresse e-mail, car ces informations seront associées à chaque commit que vous ferez. Vous pouvez configurer Git en utilisant les commandes suivantes dans le terminal :

git config --global user.name "Votre Nom"
git config --global user.email "votre@email.com"

Téléchargement d'un projet git

La commande permettant de télécharger localement un projet avec la commande git clone :

git clone [OPTION] [dossier]

Si vous renseignez un dossier, la commande n'utilise pas le nom du projet pour le nom du dossier, mais celui indiqué.

Les principales options de la commande git clone :

  • --recurse-submodules : Télécharge également tous les sous-modules. Un concept que nous verrons dans une autre documentation.

Exemple :

git clone https://github.com/git/git.git /tmp/git

git clone https://github.com/git/git.git /tmp/git

Clonage dans '/tmp/git'...
remote: Enumerating objects: 356178, done.
remote: Counting objects: 100% (458/458), done.
remote: Compressing objects: 100% (218/218), done.
Réception d'objets: 23% (81921/356178), 37.52 Mio | 4.29 Mio/s
...
Résolution des deltas: 100% (267808/267808), fait.

Initialisation d'un projet git

Nous verrons dans cette section comment initialiser votre premier projet Git localement. Pour cela, on fait appel à la commande git init :

git init [OPTION] [dossier]
  • Si vous renseignez un dossier, la commande est exécutée à l’intérieur de celui-ci. Si ce dossier n’existe pas, il sera créé.
  • Si vous ne renseignez pas de dossier alors la commande est exécutée dans le répertoire actuel.

Les principales options de la commande git init :

  • --initial-branch=name :

Exemple :

git init --initial-branch=main /tmp/toto
Dépôt Git vide initialisé dans /tmp/toto/.git/

Comme vous le remarquez la commande git init créé un dossier .git dans lequel on trouve :

drwxrwxr-x 7 bob bob 4096 nov.   2 13:58 .
drwxrwxr-x 3 bob bob 4096 nov. 2 13:58 ..
drwxrwxr-x 2 bob bob 4096 nov. 2 13:58 branches
-rw-rw-r-- 1 bob bob 92 nov. 2 13:58 config
-rw-rw-r-- 1 bob bob 73 nov. 2 13:58 description
-rw-rw-r-- 1 bob bob 21 nov. 2 13:58 HEAD
drwxrwxr-x 2 bob bob 4096 nov. 2 13:58 hooks
drwxrwxr-x 2 bob bob 4096 nov. 2 13:58 info
drwxrwxr-x 4 bob bob 4096 nov. 2 13:58 objects
drwxrwxr-x 4 bob bob 4096 nov. 2 13:58 refs
  • la configuration du fonctionnement du projet dans le fichier config.
  • des dossiers qui permettent de gérer tout l'historique du projet. Plus d'infos ici
  • ...

Ajouter des fichiers à l'index

git add

git commit

Gestion des branches

git branch

git checkout

Envoyer et tirer des modifications

Git pull

Git push

Travailler en équipes avec Git

Résolutions de conflits

Bonnes pratiques avec git

Plus d'infos

Je ne vais tout documenter, donc si vous voulez plus d'informations voici un quelques liens.

Liens

Livres gratuits

Vidéos