Apprendre Git
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é.
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 :
- de l'infrastructure pour le provisionnement et la gestion de configuration
- des pipelines CI/CD
- des programmes qu'il aura en charge d'écrire
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
- Git Magic
- Pro Git Le livre officiel
- Apprenez Git
Vidéos
- xavki 35 vidéos