GitVoici le quatrième volet de la formation Git. Dans mon précédent article, j’ai décrit en détail l’accès à GitHub et GitLab. Aujourd’hui nous allons prendre en main l’outil git à proprement parler. Pour l’instant, nous n’aurons besoin d’aucun « hub », étant donné que nous allons travailler en local sur notre machine.

Qu’est-ce qu’un dépôt Git ?

Un projet informatique est généralement constitué de toutes sortes de fichiers :

  • du code source
  • des scripts shell
  • de la documentation

Si nous voulons gérer tous ces fichiers avec Git, la première chose à faire c’est de créer un dépôt Git.

AstuceGit gère très bien le code source, les scripts shell, la documentation au format Markdown ou AsciiDoc et plus généralement tout ce qui se gère avec un éditeur de texte simple. Ne l’utilisez pas pour vos documents Word ou vos fichiers Excel.

Rappelez-vous que la principale raison pour laquelle nous utilisons un VCS (Version Control System ou logiciel de gestion de versions), c’est qu’il nous permet d’enregistrer tout l’historique de notre projet sous forme d’instantanés à intervalles réguliers.

La première chose que nous allons faire, c’est de créer un dépôt Git à l’intérieur de ce répertoire pour permettre à Git de stocker l’historique et les instantanés. Peu importe l’envergure de notre projet, la création d’un dépôt Git passe toujours par l’invocation de la commande git init à la racine du projet.

Mon premier dépôt Git

Placez-vous dans le répertoire formation-git :

$ cd ~/formation-git

Créez un répertoire atelier-05 et placez-vous dedans :

$ mkdir atelier-05
$ cd atelier-05/

Créez un dépôt Git en invoquant la commande suivante :

$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/kikinovak/formation-git/atelier-05/.git/

AstucePour l’instant vous pouvez sereinement ignorer toutes les lignes qui commencent par hint: (« astuce »). Nous nous y intéresserons en temps et en heure, mais pour l’instant, elles ne nous empêcheront pas de vivre.

Ce qui compte maintenant, c’est la dernière ligne :

Initialized empty Git repository in /home/kikinovak/formation-git/atelier-05/.git/

Git nous informe ici que tout s’est bien passé et que nous avons crée (ou initialisé) notre premier dépôt (repository) Git.

Cette initialisation s’est soldée par la création d’un répertoire caché .git :

$ ls -A
.git

Voici à quoi ressemble le contenu de ce répertoire :

$ tree .git/
.git/
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── fsmonitor-watchman.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── pre-merge-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   ├── pre-receive.sample
│   ├── push-to-checkout.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
├── heads
└── tags

9 directories, 17 files

AstuceNous allons faire abstraction du contenu du répertoire .git et le traiter comme une boîte noire. « Faire abstraction » est une expression savante qui veut dire tout simplement qu’on s’en fiche royalement.

En revanche, retenons le fait que le répertoire dans lequel nous avons invoqué la commande git init sera considéré comme le répertoire de travail (working directory) ou la copie de travail.

Dans ce répertoire, créez un fichier README.md et éditez-le comme ceci :

# Hello world

Un script shell qui dit bonjour.

Ajoutez le fichier à l’index de Git :

$ git add README.md

Validez avec la commande suivante :

$ git commit -m "Mon premier commit."
[master (root-commit) a95d10e] Mon premier commit.
1 file changed, 3 insertions(+)
create mode 100644 README.md

Quelques remarques sur ce que nous venons de faire :

  • Dans un premier temps, nous avons ajouté le fichier README.md à l’index de Git.
  • Puis nous avons effectué un commit, ce qui revient à valider ou entériner notre travail. Cette opération nécessite de fournir un message pour expliquer ce que nous faisons.
  • L’option -m ou --message permet de fournir un message. Utilisez l’option longue si vous avez un penchant prononcé pour la dactylographie.
  • Notez la petite séquence de chiffres et de lettres a95d10e. Chez vous ce sera autre chose. Du moment que vous voyez la ligne create mode, tout va bien.

À présent, créez un deuxième fichier et éditez-le comme ceci :

#!/bin/bash
#
# hello-world.sh

echo "Hello world !"

ImportantC’est un cours sur Git, pas une formation sur la programmation, hein. Je fais exprès de choisir des exemples extrêmement simples pour vous permettre de vous concentrer sur la gestion de versions à proprement parler tout en ayant le moins possible de texte à taper.

Rendez le fichier exécutable :

$ chmod +x hello-world.sh

Exécutez-le pour le fun :

$ ./hello-world.sh
Hello world !

Ajoutez le fichier à l’index de Git :

$ git add hello-world.sh

Effectuez un commit avec un message qui va bien :

$ git commit -m "Ajout d'un script qui dit bonjour."
[master d5acff2] Ajout d'un script qui dit bonjour.
1 file changed, 5 insertions(+)
create mode 100755 hello-world.sh

AstuceLe verbe anglais « to commit » pourra être traduit en français par « valider » ou « entériner ». Alternativement, nous pouvons « faire un commit« . Dans la documentation française, vous trouverez parfois le néologisme franglais « commiter« . Peu importe votre préférence lexicale, du moment que vous ne finissez pas par « commettre ». :o)

Exercice 1

  • Créez un répertoire formation-git/atelier-06.
  • À l’intérieur de ce répertoire, créez un répertoire curriculum-vitae.
  • Initialisez un dépôt Git dans ce répertoire.
  • Créez un fichier Curriculum.md avec votre CV simplifié en syntaxe Markdown.
  • Ajoutez ce fichier à l’index de Git.
  • Effectuez un commit avec le message « Premier jet de mon CV. »

Exercice 2

  • Créez un répertoire formation-git/atelier-07.
  • À l’intérieur de ce répertoire, créez un répertoire hello-user.
  • Initialisez un dépôt Git dans ce répertoire.
  • Créez un script shell hello-user.sh qui salue l’utilisateur connecté en utilisant la variable d’environnement $USER.
  • Ajoutez ce script à l’index de Git.
  • Effectuez un commit avec le message « Commit initial. »
  • Créez un fichier README.txt qui explique en une ou deux lignes ce que fait votre script.
  • Ajoutez ce fichier à l’index de Git.
  • Effectuez un commit avec un message qui va bien.

À ce stade, vous vous demandez probablement pourquoi Git nous fait sauter à travers des cerceaux en feu en nous obligeant à chaque fois d’invoquer plusieurs commandes pour enregistrer notre travail. C’est ce qui fait l’objet de notre prochain article.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 

Catégories : Formation

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *