Ce guide vous montre comment créer votre premier dépôt Git ou
récupérer un projet existant. Vous utiliserez git init pour démarrer
un nouveau projet et git clone pour récupérer un projet distant.
À la fin, vous comprendrez ce que contient le dossier .git/ et
pourquoi il est essentiel.
Prérequis : Git installé et configuré (identité, éditeur).
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »git init: créer un dépôt vide dans un dossier existant ou nouveaugit clone: récupérer un projet distant avec tout son historique- La structure
.git/: comprendre ce que Git stocke dans votre projet - Dépôt bare vs normal : quand utiliser l’un ou l’autre
Créer un dépôt local avec git init
Section intitulée « Créer un dépôt local avec git init »La commande git init transforme un dossier ordinaire en dépôt Git.
Elle crée un sous-dossier .git/ qui contient toute la mécanique de
versioning.
Initialiser un nouveau projet
Section intitulée « Initialiser un nouveau projet »-
Créer le dossier et initialiser :
Fenêtre de terminal git init mon-portfolioSortie attendue :
Dépôt Git vide initialisé dans /home/bob/Projets/mon-portfolio/.git/ -
Entrer dans le projet :
Fenêtre de terminal cd mon-portfolio -
Vérifier que Git est actif :
Fenêtre de terminal git statusSortie attendue :
On branch mainNo commits yetnothing to commit (create/copy files and use "git add" to track)
Si le dossier existe déjà, vous pouvez initialiser Git à l’intérieur :
cd mon-projet-existantgit initGit ne modifie aucun de vos fichiers. Il crée simplement le dossier
.git/ à côté de vos fichiers existants.
Créer un .gitignore dès le départ
Section intitulée « Créer un .gitignore dès le départ »Avant votre premier commit, créez toujours un fichier .gitignore pour
exclure les fichiers qui n’ont pas leur place dans l’historique Git :
cat > .gitignore << 'EOF'# Dépendancesnode_modules/vendor/.venv/
# Fichiers de builddist/build/*.o
# Éditeurs et IDE.vscode/.idea/*.swp
# Secrets (ne JAMAIS committer).env*.key*.pemEOFCloner un dépôt distant avec git clone
Section intitulée « Cloner un dépôt distant avec git clone »La commande git clone télécharge un projet distant avec tout son
historique. C’est l’équivalent de photocopier un classeur complet au
lieu de le créer de zéro.
Cloner via SSH (recommandé)
Section intitulée « Cloner via SSH (recommandé) »git clone git@github.com:username/mon-projet.gitSortie attendue :
Clonage dans 'mon-projet'...remote: Enumerating objects: 150, done.remote: Counting objects: 100% (150/150), done.remote: Compressing objects: 100% (98/98), done.Réception d'objets: 100% (150/150), 45.20 KiB | 1.20 MiB/s, fait.Résolution des deltas: 100% (52/52), fait.Cloner via HTTPS
Section intitulée « Cloner via HTTPS »git clone https://github.com/username/mon-projet.gitOptions utiles de git clone
Section intitulée « Options utiles de git clone »| Option | Usage | Exemple |
|---|---|---|
<dossier> | Renommer le dossier local | git clone url mon-dossier |
--depth 1 | Clone superficiel (dernier commit seul) | Utile pour les très gros dépôts |
--branch <nom> | Cloner une branche spécifique | git clone --branch develop url |
--recurse-submodules | Inclure les sous-modules | Projets avec dépendances Git |
Exemple de clone dans un dossier personnalisé :
git clone git@github.com:git/git.git /tmp/sources-gitSortie attendue :
Clonage dans '/tmp/sources-git'...remote: Enumerating objects: 356178, done....Résolution des deltas: 100% (267808/267808), fait.Comprendre la structure du dossier .git/
Section intitulée « Comprendre la structure du dossier .git/ »Après un git init ou un git clone, explorez le contenu du dossier
.git/ :
ls -la .git/Sortie attendue :
drwxrwxr-x 7 bob bob 4096 mars 28 10:00 .drwxrwxr-x 3 bob bob 4096 mars 28 10:00 ..drwxrwxr-x 2 bob bob 4096 mars 28 10:00 branches-rw-rw-r-- 1 bob bob 92 mars 28 10:00 config-rw-rw-r-- 1 bob bob 73 mars 28 10:00 description-rw-rw-r-- 1 bob bob 21 mars 28 10:00 HEADdrwxrwxr-x 2 bob bob 4096 mars 28 10:00 hooksdrwxrwxr-x 2 bob bob 4096 mars 28 10:00 infodrwxrwxr-x 4 bob bob 4096 mars 28 10:00 objectsdrwxrwxr-x 4 bob bob 4096 mars 28 10:00 refsChaque élément a un rôle précis :
| Fichier / Dossier | Rôle |
|---|---|
HEAD | Pointe vers la branche courante (ex : ref: refs/heads/main) |
config | Configuration locale du dépôt (niveau --local) |
objects/ | Stocke tous les objets Git (commits, arbres, fichiers) |
refs/ | Contient les pointeurs de branches et tags |
hooks/ | Scripts exécutés automatiquement à certains événements |
info/ | Fichiers d’information (ex : exclusions locales) |
Dépôt normal vs dépôt bare
Section intitulée « Dépôt normal vs dépôt bare »Git distingue deux types de dépôts :
| Caractéristique | Dépôt normal | Dépôt bare |
|---|---|---|
| Working Directory | Oui (vos fichiers) | Non |
Dossier .git/ | Sous-dossier du projet | Le projet entier |
| Usage | Développement quotidien | Serveur (hébergement) |
| Créé avec | git init | git init --bare |
Un dépôt bare ne contient que la base de données Git, sans copie de travail. C’est ce qu’utilisent les serveurs comme GitHub et GitLab pour héberger vos projets. Vous ne travaillez jamais directement dans un dépôt bare.
git init --bare mon-serveur.gitEn pratique, vous n’aurez presque jamais besoin de créer un dépôt bare. Les plateformes comme GitHub et GitLab s’en chargent.
Dépannage : problèmes courants
Section intitulée « Dépannage : problèmes courants »| Symptôme | Cause probable | Solution |
|---|---|---|
fatal: not a git repository | Vous n’êtes pas dans un dossier contenant .git/ | Naviguez dans le bon dossier avec cd ou initialisez avec git init |
Permission denied (publickey) au clone SSH | Clé SSH pas configurée | Suivez la section SSH du guide d’installation |
| Clone HTTPS demande un mot de passe | Token personnel requis | GitHub/GitLab exigent un Personal Access Token, pas votre mot de passe |
git init crée une branche master | init.defaultBranch pas configuré | git config --global init.defaultBranch main |
fatal: destination path already exists | Dossier déjà existant au clone | Supprimez le dossier ou clonez dans un autre emplacement |
À retenir
Section intitulée « À retenir »git initcrée un dépôt local vide — c’est votre point de départ pour tout nouveau projetgit clonecopie un dépôt distant avec tout son historique- Le dossier
.git/contient toute la mécanique de Git — ne le supprimez pas - Créez un
.gitignoredès le premier commit pour exclure les fichiers indésirables - Ne committez jamais de secrets : mots de passe, clés API, tokens
- SSH est recommandé pour cloner : plus sécurisé et sans saisie de mot de passe