Aller au contenu
Développement medium
🔐 Alerte sécurité — Incident supply chain Trivy : lire mon analyse de l'attaque

Créer un dépôt Git : git init et git clone

9 min de lecture

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).

  • git init : créer un dépôt vide dans un dossier existant ou nouveau
  • git 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

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.

  1. Créer le dossier et initialiser :

    Fenêtre de terminal
    git init mon-portfolio

    Sortie attendue :

    Dépôt Git vide initialisé dans /home/bob/Projets/mon-portfolio/.git/
  2. Entrer dans le projet :

    Fenêtre de terminal
    cd mon-portfolio
  3. Vérifier que Git est actif :

    Fenêtre de terminal
    git status

    Sortie attendue :

    On branch main
    No commits yet
    nothing to commit (create/copy files and use "git add" to track)

Si le dossier existe déjà, vous pouvez initialiser Git à l’intérieur :

Fenêtre de terminal
cd mon-projet-existant
git init

Git ne modifie aucun de vos fichiers. Il crée simplement le dossier .git/ à côté de vos fichiers existants.

Avant votre premier commit, créez toujours un fichier .gitignore pour exclure les fichiers qui n’ont pas leur place dans l’historique Git :

Fenêtre de terminal
cat > .gitignore << 'EOF'
# Dépendances
node_modules/
vendor/
.venv/
# Fichiers de build
dist/
build/
*.o
# Éditeurs et IDE
.vscode/
.idea/
*.swp
# Secrets (ne JAMAIS committer)
.env
*.key
*.pem
EOF

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.

Fenêtre de terminal
git clone git@github.com:username/mon-projet.git

Sortie 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.
Fenêtre de terminal
git clone https://github.com/username/mon-projet.git
OptionUsageExemple
<dossier>Renommer le dossier localgit clone url mon-dossier
--depth 1Clone superficiel (dernier commit seul)Utile pour les très gros dépôts
--branch <nom>Cloner une branche spécifiquegit clone --branch develop url
--recurse-submodulesInclure les sous-modulesProjets avec dépendances Git

Exemple de clone dans un dossier personnalisé :

Fenêtre de terminal
git clone git@github.com:git/git.git /tmp/sources-git

Sortie attendue :

Clonage dans '/tmp/sources-git'...
remote: Enumerating objects: 356178, done.
...
Résolution des deltas: 100% (267808/267808), fait.

Après un git init ou un git clone, explorez le contenu du dossier .git/ :

Fenêtre de terminal
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 HEAD
drwxrwxr-x 2 bob bob 4096 mars 28 10:00 hooks
drwxrwxr-x 2 bob bob 4096 mars 28 10:00 info
drwxrwxr-x 4 bob bob 4096 mars 28 10:00 objects
drwxrwxr-x 4 bob bob 4096 mars 28 10:00 refs

Chaque élément a un rôle précis :

Fichier / DossierRôle
HEADPointe vers la branche courante (ex : ref: refs/heads/main)
configConfiguration 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)

Git distingue deux types de dépôts :

CaractéristiqueDépôt normalDépôt bare
Working DirectoryOui (vos fichiers)Non
Dossier .git/Sous-dossier du projetLe projet entier
UsageDéveloppement quotidienServeur (hébergement)
Créé avecgit initgit 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.

Fenêtre de terminal
git init --bare mon-serveur.git

En pratique, vous n’aurez presque jamais besoin de créer un dépôt bare. Les plateformes comme GitHub et GitLab s’en chargent.

SymptômeCause probableSolution
fatal: not a git repositoryVous 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 SSHClé SSH pas configuréeSuivez la section SSH du guide d’installation
Clone HTTPS demande un mot de passeToken personnel requisGitHub/GitLab exigent un Personal Access Token, pas votre mot de passe
git init crée une branche masterinit.defaultBranch pas configurégit config --global init.defaultBranch main
fatal: destination path already existsDossier déjà existant au cloneSupprimez le dossier ou clonez dans un autre emplacement
  • git init crée un dépôt local vide — c’est votre point de départ pour tout nouveau projet
  • git clone copie 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 .gitignore dè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

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn