Avec Git cette fois
Nous allons reprendre les étapes de la section précédente, mais cette fois en utilisant les vraies commandes Git. Vous verrez que Git automatise et optimise toutes les opérations que nous avons faites à la mitaine.
Mise en place
Créons d'abord un dossier pour notre projet et initialisons un dépôt Git :
mkdir git_mitaine
cd git_mitaine
git init
Créons deux fichiers texte :
echo "All your base are belong to us" > fichierA.txt
echo "Winter is installing" > fichierB.txt
À ce stade, l'arborescence du projet ressemble à :
git_mitaine/
├── fichierA.txt
└── fichierB.txt
Le dossier .git
a été créé automatiquement par git init
. Il contiendra tout
l'historique, les métadonnées, etc.
Première version
Ajoutons les fichiers à l'index (staging area) puis validons-les :
git add fichierA.txt fichierB.txt
git commit -m "Première version"
La commande git add
prépare les fichiers pour la validation en mettant à jour
l'index. La commande git commit
enregistre un instantané complet de cet
index. C'est exactement ce que nous avons fait manuellement dans la section
précédente avec le répertoire prochaine_validation
à l'exception que cette fois ce dernier
est géré par Git et disponible dès la première étape.
Deuxième version
Modifions les fichiers :
echo "- Superman, 1756 (??)" >> fichierA.txt
echo "- Lord Tywin Lannister (pas certain...)" >> fichierB.txt
A ce stade nous pourrions simplement refaire un git add
et un git commit
, mais
nous allons d'abord vérifier l'état du dépôt et les différences entre les fichiers
modifiés dans le répertoire de travail et l'index avec la commande suivante :
git status
Git nous indique que les fichiers fichierA.txt
et fichierB.txt
ont été
modifiés mais qu'ils ne sont pas dans l'index (not staged for commit). Si nous
les ajoutons à l'index avec la commande git add
alors la commande git status
affichera qu'ils sont prêts à être validés (Changes to be committed).
git add fichierA.txt fichierB.txt
git status
On peut alors valider l'index qui contient les modifications apportées aux fichiers :
git commit -m "Deuxième version"
Git enregistre à nouveau un instantané complet, mais optimise le stockage en ne gardant que les différences.
Troisième version (valider seulement un fichier, changer de parent)
Supposons que l'on souhaite repartir de la première version et ne valider que
fichierA.txt
.
Affichons l'historique pour trouver l'identifiant du commit initial :
git log --oneline
Cette command affiche l'historique des commits avec leurs identifiants abrégés. Par exemple :
5662291 (HEAD -> main) Deuxième version
a87f4ef Première version
En effet, Git n'utilise pas des noms comme v1
, v2
, etc. mais plutôt des
identifiants de commit uniques (hash). Ici, a87f4ef
est l'identifiant abrégé
du premier commit. Pour l'instant, l'index contient les modifications de
fichierA.txt
et fichierB.txt
de la deuxième version. D'ailleurs le texte
(HEAD -> main)
indique que HEAD
(et la branche main
) pointe sur le dernier commit, soit la
deuxième version.
Il faut donc dire à Git de revenir au commit a87f4ef
pour créer une nouvelle
branche à partir de ce commit. Créons une nouvelle branche à partir de ce commit :
Il faut changer dans les commandes suivantes l'identifiant du commit pour celui
donner par git log --oneline
sur votre machine.
git switch a87f4ef -c version2
Cette commande va créer une nouvelle branche nommée version2
à partir du
commit a87f4ef
(la première version). La branche main
reste inchangée et
continue de pointer sur le dernier commit. Nous verrons plus en détail
comment fonctionnent les branches dans une section ultérieure.
Modifions le contenu de fichierA.txt
:
echo "- CATS, Zero Wing 1991" >> fichierA.txt
Ajoutons et validons uniquement ce fichier :
git add fichierA.txt
git commit -m "Troisième version (corrige citation fichierA.txt)"
Visualiser l'historique graphique
Pour voir le graphe des validations :
git log --oneline --graph --all
Quatrième version
Modifions fichierB.txt
pour corriger la citation :
echo "Winter is coming
- Ned Stark, A Game of Thrones 1996" > fichierB.txt
Ajoutons et validons :
git add fichierB.txt
git commit -m "Quatrième version (corrige citation fichierB.txt)"
On peut visualiser que notre historique correspond bien à ce que nous avons fait à la mitaine :
git log --oneline --graph --all
Si certaines commandes ou terminologies vous semblent obscures, ne vous inquiétez pas, nous les expliquerons en détail dans les sections suivantes. L'important est de comprendre le flux de travail général.