Par Anonyme (non vérifié) , 29 avril 2026

Introduction

git init transforme un répertoire ordinaire en dépôt Git. Il crée un répertoire caché .git contenant toute la comptabilité de Git : objets, refs, configuration et hooks. L'arborescence de travail (vos fichiers normaux) est inchangée.

Initialiser un projet

mkdir my-project
cd my-project
git init
# Initialized empty Git repository in /home/ada/my-project/.git/

Depuis Git 2.28, vous pouvez définir le nom de la branche initiale en ligne de commande :

git init --initial-branch=main
# ou en raccourci
git init -b main

Ce qui vient de se passer

Inspectez le nouveau répertoire :

ls -a
ls .git

Vous verrez HEAD, config, description, hooks/, info/, objects/ et refs/. Rien n'est encore commité ; HEAD pointe vers une branche non née.

Votre premier commit

  1. Créez un fichier : echo "# My Project" > README.md
  2. Stagez-le : git add README.md
  3. Commitez : git commit -m "Initial commit"
echo "# My Project" > README.md
git add README.md
git commit -m "Initial commit"
git log --oneline

Dépôts nus (bare)

Les serveurs hébergent généralement des dépôts nus sans arborescence de travail. Utilisez --bare :

git init --bare project.git

Les dépôts nus sont la cible des push ; vous n'éditez pas de fichiers à l'intérieur directement.

Réinitialisation

Réexécuter git init dans un dépôt existant est sans danger ; il réapplique les modèles et affiche « Reinitialized existing Git repository ». Il ne supprime pas les commits.

Modèles

Par défaut, git init alimente .git/hooks/ depuis /usr/share/git-core/templates/. Vous pouvez surcharger le répertoire de modèles pour injecter vos propres hooks, un .gitignore par défaut ou une description dans chaque nouveau dépôt :

git init --template=~/.git-templates
git config --global init.templateDir ~/.git-templates

C'est ainsi que les organisations propagent des hooks pre-commit standard dans chaque nouveau clone sans que chaque développeur copie des fichiers manuellement.

Nom de la branche initiale

De nombreux projets sont passés de master à main comme nom de branche par défaut. Le choix est local à votre dépôt, mais correspondre au défaut de votre fournisseur d'hébergement évite la confusion lors du premier push. Définissez-le une fois globalement et oubliez-le : git config --global init.defaultBranch main.

Où Git arrête de chercher

Git localise le dépôt en remontant l'arborescence des répertoires jusqu'à trouver un répertoire ou fichier .git. La remontée s'arrête aux frontières du système de fichiers par défaut (core.discoveryAcrossFilesystem change cela). La variable d'environnement GIT_DIR surcharge entièrement la découverte ; GIT_WORK_TREE définit une arborescence de travail non par défaut. Ensemble, elles vous permettent d'opérer sur un dépôt dont le .git est dans un emplacement inhabituel :

GIT_DIR=/srv/repos/widget.git GIT_WORK_TREE=/var/www git status

Erreurs fréquentes

Exécuter git init dans votre répertoire personnel par accident, ce qui place toute votre collection de dotfiles sous une racine de dépôt massive. Vérifiez toujours pwd d'abord. Autre erreur : supprimer .git pour « repartir de zéro » tout en conservant le travail non commité. C'est correct, mais sachez que tout l'historique est perdu pour toujours. Enfin, ne commitez pas de gros binaires dans un dépôt fraîchement initialisé sans avoir d'abord écrit un .gitignore ; vous le regretterez quand le dépôt enflera. Exécutez git status juste après git init pour voir ce que Git compte suivre avant de stager quoi que ce soit.