Le gestionnaire de source est, avec l’EDI, l’un des outils dont on ne peut se passer aujourd’hui. Il permet de travailler en équipe, de garder un historique des développements, de mieux dormir la nuit etc.

Ce tutoriel va vous accompagner pas à pas dans la découverte de cet outil qu’il est primordial de bien maîtriser.

1. Prérequis

En pre-requis pour cette introduction à Git, il est nécessaire d’installer les outils suivants :

Afin de vérifier que Git est correctement installé sur votre machine, vous pouvez ouvrir un terminal et tapez la commande suivante :

git --version

2. Configurer Git Bash (Bourne-Again SHell)

Afin de faciliter l’utilisation de Git Bash, nous allons customiser la configuration de base de Git.

Pour cela :

  • allez dans le répertoire : C:/Users/[Nom d’utilisateur Windows]/,
  • ouvrez le fichier .gitconfig
  • et remplacez le contenu du fichier par celui-ci :
[user]
 name = VotreNom
 email = Votre@dresse.mail
[color]
 ui = auto
[alias]
 lg = log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'
[log]
 abbrevCommit = true
 follow = true
[status]
 submoduleSummary = true
 showUntrackedFiles = all
[color "branch"]
 upstream = cyan
[init]
 defaultBranch = main

Cette configuration permet d’utiliser Git Bash de façon plus lisible.

Vous verrez surtout la différence avec la commande git lg.

3. Mon 1er dépôt (repository)

Ouvrez une invite de commande et créez un dossier avec la commande :

mkdir mon-premier-repo

Dans Visual Studio Code :

  • Ouvrez le dossier mon-premier-repo.
  • Ouvrez un terminal : Ctrl + ù ou View > Terminal.
  • Ouvrez un Git Bash dans Visual Studio Code :

open-git-bash

Pour créer votre premier dépôt, tapez la commande suivante dans le Git Bash :

git init

Une fois cette commande exécutée. Le dossier mon-premier-repo a été créé et il contient votre dépôt.

Le dépôt est le dossier nommé .gitGit stocke ses informations. Sous Windows, c’est un dossier caché. A partir de maintenant, toutes les modifications apportées au dossier mon-premier-repo et à son contenu seront détectées par Git.

Si tout s’est bien passé, vous devez avoir (main) au bout du chemin indiqué dans le Git bash :

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)

4. Status

Afin de savoir où en est notre dépôt, nous allons utiliser la commande suivante :

git status
MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git status
On branch main

No commits yet

nothing to commit (create/copy files and use "git add" to track)

Git nous indique ici où il en est : No commits yet, nothing to commit.

Cette commande est très pratique.

Git fournit toujours des informations utiles.

Nous allons l’utiliser régulièrement afin de savoir quel est l’état de notre dépôt.

5. Track / Stage

Pour l’instant notre dépôt est vide.

Nous allons donc créer un fichier dans le dossier mon-premier-repo avec la commande :

touch 1erFichier.txt

Utilisez la commande git status.

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        1erFichier.txt

nothing added to commit but untracked files present (use "git add" to track)

Git vous indique maintenant qu’un fichier a été ajouté mais qu’il n’est pas suivi (tracked) : Untracked files : 1erFichier.txt.

En plus de cela, il vous indique comment ajouter ce fichier!

Vous pouvez donc utiliser la commande proposée par Git :

git add 1erFichier.txt

Utilisez la commande git status.

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   1erFichier.txt

Notez la différence par rapport à l’exécution précédente : Changes to be committed: new file: 1erFichier.txt.

Dans Visual Studio Code, ouvrez 1erFichier.txt.

Modifiez son contenu puis sauvegardez (CTRL+S).

Utilisez la commande git status.

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   1erFichier.txt

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   1erFichier.txt

A présent Git vous indique que vous avez une modification à commit et une modification qui n’est pas staged for commit.

6. Commit et Staging Area

Commit signifie “engagement” et Stage signifie “étape”.

Un commit est une liste de modifications apportées à vos fichiers/dossiers.

Cela peut être des ajouts ou des suppressions de fichier, des modifications de contenu, un renommage etc.

Git fonctionne en delta.

Un commit ne contient pas l’intégralité de votre dossier mais uniquement les modifications effectuées depuis le dernier commit (de la branche courante).

Ce qui est stocké dans un dépôt Git et la liste des commits que vous avez effectués depuis la création du dépôt.

Pour l’instant votre dépôt ne contient pas encore de commit.

Git vous met à disposition un état intermédiaire nommé la staging area.

Les fichiers qui sont stockés dans la staging area seront intégrés lors de votre prochain commit.

Les modifications qui ne le sont pas ne seront pas intégrées au commit mais elles ne seront pas perdues pour autant!

Pour le vérifier, nous allons effectuer notre premier commit avec la commande suivante :

git commit -m "creation du dépôt ajout de 1erFichier.txt"

Faites à présent un git status, vous verrez que Git ne plus parle que de votre modification de fichier :

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   1erFichier.txt

no changes added to commit (use "git add" and/or "git commit -a")

Pour résumer voici un schéma qui décrit les concepts que nous venons de voir :

7. Log

Ajouter maintenant un nouveau fichier avec la commande :

touch 2emeFichier.txt

A présent vous avez deux modifications en cours qui ne sont pas suivies.

Afin d’ajouter toutes les modifications en cours (non “commitées”) à votre Staging Area, utilisez :

git add .

Puis effectuez un commit :

git commit -m "ajout de 2emeFichier.txt et modification de 1erFichier.txt"

Pour visualiser la liste des modifications nous pouvez utiliser la commande de base git log ou la commande git lg (permise grace à notre configuration custom .gitconfig).

Ces commandes permettent de consulter l’historique des commits présents dans un dépôt.

Si vous souhaitez ne voir que les n derniers commits, vous pouvez l’utiliser comme suit :

git lg -n

Exemple :

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git lg -1
* d17c78e - (HEAD -> main) ajout de 2emeFichier.txt et modification de 1erFichier.txt

8. Short Hash

Les commits sont identifiés par leurs ids.

Il correspond à un hash basé notamment sur : contenu, date, auteur, commit précédent…

Le risque de collision est très faible.

Lorsqu’on utilise la commande git lg, on affiche la version courte des ids des commits :

MINGW64 ~/source/repos/agora/github/mon-premier-repo (main)
$ git lg
* d17c78e - (HEAD -> main) ajout de 2emeFichier.txt et modification de 1erFichier.txt
* 38db667 - creation du dépôt ajout de 1erFichier.txt

Cette forme est plus pratique et permet de faire énormément de choses.

Par exemple : restaurer le contenu de tout notre dossier mon-premier-repo.

En une seule commande nous pouvons utiliser le Short Hash du premier commit et la commande checkout, exemple :

git checkout 38db667

Suite à la dernière commande (git checkout 38db667), le dépôt n’est plus rattaché à une branche.

 MINGW64 ~/source/repos/agora/github/mon-premier-repo ((38db667...))
$

La suite

La notion de branche est la plus importante de Git et c’est que nous verrons dans notre prochain post sur Git : 2 - les branches!