L'Archive est Partout
Git local, .git/, clone, bare repo
Tu retrouves le Maître Archiviste dans une salle inhabituelle. Pas de rayonnages, pas de parchemins empilés. Juste une table vide et une bougie. Il te regarde avec un sourire énigmatique.
« Jeune Archiviste, tu as appris à sceller des parchemins dans l'Archive. Mais dis-moi... où se trouve l'Archive exactement ? »
Tu pointes du doigt la grande salle centrale de la Citadelle. Le Maître secoue la tête.
« Non. L'Archive n'est pas un lieu. L'Archive est partout. Chaque copie du savoir EST l'Archive. Il n'y a pas de salle centrale. Chaque Archiviste porte toute l'histoire avec lui. C'est le secret de Git. »
Git n'a besoin d'aucun serveur
C'est le malentendu le plus répandu chez les débutants : beaucoup pensent que Git = GitHub. Que pour utiliser Git, il faut un compte en ligne, un serveur, une connexion internet.
C'est faux.
Git est un outil local. Il fonctionne entièrement sur ta machine, sans aucune connexion réseau. Tout ce dont Git a besoin tient dans un seul dossier : .git/.
Explorer le dossier .git/
Quand tu fais git init, Git crée un dossier caché .git/ à la racine de ton projet. C'est là que tout est stocké. Voici sa structure :
objects/ ← les données (commits, fichiers compressés)
refs/ ← les branches et tags
heads/ ← les branches locales
tags/ ← les tags
hooks/ ← scripts automatiques
HEAD ← « où suis-je maintenant ? »
config ← configuration locale du repo
index ← zone de transit (staging area)
Pour explorer ce dossier toi-même :
ls -la .git/ # Linux / macOS / Git Bash Get-ChildItem .git\ -Force # PowerShell Tout Git, c'est ce dossier .git/. Supprime-le et ton repo disparaît - tu ne gardes que les fichiers de travail, mais tout l'historique est perdu. Copie ce dossier ailleurs, et tu as un clone complet.
Clone local - Sans internet
Puisque Git est entièrement local, tu peux cloner un repo sans aucune connexion internet. Il suffit de pointer vers un dossier sur ta propre machine :
# Depuis le dossier parent qui contient mon-archive/
git clone ./mon-archive ./ma-copie
# Vérifie que l'historique est identique
cd ma-copie
git log --oneline # Depuis le dossier parent qui contient mon-archive\
git clone .\mon-archive .\ma-copie
cd ma-copie
git log --oneline La commande git clone crée automatiquement une remote nommée origin qui pointe vers la source du clone. Ici, origin pointe vers ../mon-archive - un simple chemin sur ton disque, pas une URL internet.
Bare repo - Un repo sans espace de travail
Un bare repo est un repo qui contient uniquement le contenu de .git/ - pas de fichiers de travail. C'est le format utilisé par les serveurs Git.
# Créer un bare repo
git init -b main --bare ./archive-centrale.git
# Ajouter comme remote et pousser
cd mon-archive
git remote add origin ../archive-centrale.git
git push origin main # Créer un bare repo
git init -b main --bare .\archive-centrale.git
# Ajouter comme remote et pousser
cd mon-archive
git remote add origin ..\archive-centrale.git
git push origin main C'est exactement ce que fait un serveur Git. Quand tu fais git push vers GitHub, tu envoies tes commits vers un bare repo hébergé sur leurs serveurs. Rien de magique.
L'architecture en action
Voici comment les trois repos interagissent :
.git/ + fichiers .git/ + fichiers Les trois repos contiennent le même historique. Chaque copie est autonome.
Démystification des plateformes
GitHub, GitLab, Forgejo, Bitbucket... sont des serveurs qui hébergent des bare repo et y ajoutent une interface web.
| Fonctionnalité | Git | Plateforme |
|---|---|---|
| Commits, branches, historique | ✓ | |
| Push, pull, clone | ✓ | |
| Issues (tickets de bugs) | ✓ | |
| Pull Requests / Merge Requests | ✓ | |
| CI/CD (tests automatiques) | ✓ | |
| Wiki intégré | ✓ | |
| Interface web pour le code | ✓ |
Tu n'as pas besoin d'un compte GitHub pour utiliser Git. Tu n'as pas besoin d'internet pour faire des commits. Un dossier partagé, une clé USB ou un serveur SSH suffisent pour collaborer.
Exercice pratique
Crée trois copies d'un même repo et vérifie qu'elles partagent le même historique.
- git clone
mon-archive/versma-copie/ - Crée un bare repo
archive-centrale.git - Ajoute-le comme remote dans
mon-archive/et pousse - git clone depuis le bare repo vers
clone-depuis-bare/ - Vérifie que les 3 ont le même historique avec
git log --oneline - Lance le script de vérification
Prérequis
Tu as besoin du repo mon-archive/ de la quête 03. Si tu ne l'as pas :
mkdir mon-archive && cd mon-archive
git init -b main
echo "Bienvenue dans l'Archive" > README.md
git add README.md
git commit -m "Premier parchemin"
cd .. Les commandes
# 1. Clone local
git clone ./mon-archive ./ma-copie
# 2. Bare repo
git init -b main --bare ./archive-centrale.git
# 3. Ajouter la remote et pousser
cd mon-archive
git remote add origin ../archive-centrale.git
git push origin main
cd ..
# 4. Clone depuis le bare repo
git clone ./archive-centrale.git ./clone-depuis-bare
# 5. Vérifier l'historique
cd mon-archive && git log --oneline && cd ..
cd ma-copie && git log --oneline && cd ..
cd clone-depuis-bare && git log --oneline && cd .. Vérification
bash verifier.sh .\verifier.ps1 Le Maître Archiviste te regarde avec fierté.
« Tu comprends maintenant le véritable pouvoir de l'Archive. Elle ne dépend d'aucune tour, d'aucun serveur, d'aucune plateforme. Chaque copie est complète. Chaque Archiviste est autonome. Dans la prochaine quête, nous explorerons les Lignes du Temps - tu apprendras à naviguer dans l'historique de l'Archive. »