Avant git init
mon-projet/├── index.html└── style.css
git status# fatal: not a git repositorySans git init, votre dossier n’est qu’un dossier. Avec, il devient une base de données versionnée.
Avant git init
mon-projet/├── index.html└── style.css
git status# fatal: not a git repositoryAprès git init
mon-projet/├── .git/ ← base de données versionnée├── index.html└── style.css
git status# On branch main# No commits yetgit init vs git clonegit init)Pour un projet local qui n’existe pas encore sur GitHub :
mkdir mon-projetcd mon-projetgit init# ou explicite :git init --initial-branch=main--initial-branch=main évite l’ancienne branche master.
git clone)Pour un projet déjà sur GitHub :
git clone https://github.com/joinhashcode/workshops.git# ou SSH :git clone git@github.com:joinhashcode/workshops.gitcd workshopsclone fait 4 choses : init + remote add origin + fetch + checkout.
Commandes à exécuter
git init ?pwd# /workspace/mon-projet ✅ bongit init
cd mon-projet/sous-dossiergit init# ⚠️ dépôt dans un dépôt ! Évitez.Vérifiez toujours avec pwd et ls -la.
.gitNe supprimez jamais .git manuellement — c’est tout votre historique.
.git/├── HEAD → ref: refs/heads/main (branche actuelle)├── config → user.name, remote origin, branch.main├── objects/ → commits, trees, blobs (compressés)├── refs/│ └── heads/│ └── main → hash du dernier commit├── index → Staging Area (index binaire)└── hooks/ → scripts (pre-commit, etc.)ls -la .gitcat .git/HEADcat .git/config# [core]# repositoryformatversion = 0# [user]# name = Aïda Diallo
ls .git/refs/heads/# main
ls .git/objects/# ab cd ef ... (hashes)Le dossier .git est la base de données
Supprimer .git = perdre définitivement tout l’historique (commits, branches). Pour
“dé-git-ifier” un projet, supprimez .git volontairement puis git init à nouveau — mais
vous repartez de zéro.
Commandes à exécuter
.gitignore, README.md, LICENSE.gitignore — dire à Git quoi ignorerSans .gitignore, vous commitez node_modules/, .env, dist/ par erreur.
# Dépendancesnode_modules/vendor/
# Secrets.env.env.local*.pem
# Builddist/build/.next/coverage/
# OS / IDE.DS_StoreThumbs.db.vscode/.idea/
# Logs*.lognpm-debug.log*Règles :
*.log → tous les .log!important.log → exception (ne pas ignorer)dist/ → dossierhttps://github.com/github/gitignoreREADME.md — la porte d’entrée# Mon Projet
Description en une phrase.
## Installation
npm install
## Usage
npm run devLICENSE — cadre légal# GitHub → Add a license → MIT (permissif) / Apache 2.0 / GPLgh repo create mon-projet --public --license mit| Licence | Usage |
|---|---|
| MIT | Faire ce que vous voulez, garder la licence |
| Apache 2.0 | MIT + brevet |
| GPL v3 | Modifications doivent rester GPL |
Commandes à exécuter
git status en détailgit status est la boussole. Apprenez à la lire :
| Indicateur | Signification |
|---|---|
?? fichier |
Untracked — jamais ajouté |
A fichier |
Added — dans l’index, prêt à committer |
M fichier |
Modified — changé hors index |
M fichier |
Modified + staged — git add fait |
D fichier |
Deleted |
nothing to commit |
Propre |
git statusgit status --shortgit status -u # -u = untracked files modegit status --ignored # voir les ignorésAutres vérifications :
pwd # où suis-je ?ls -la # .git visible ?git log --oneline # historique (vide au début)git remote -v # distant configuré ?Quelle commande initialise un nouveau dépôt Git ?
Cliquer pour révéler la réponsegit init (ou git init --initial-branch=main pour forcer main)
Cliquer pour voir la questionQue contient le dossier .git ?
Cliquer pour révéler la réponseHEAD, config, objects/, refs/heads/, index — toute la base locale : commits, branches, config.
Cliquer pour voir la questionPeut-on modifier manuellement les fichiers dans .git ?
Cliquer pour révéler la réponseNon. Toujours passer par git config, git branch, etc. Risque de corruption.
Cliquer pour voir la questionÀ quoi sert .gitignore ?
Cliquer pour révéler la réponseLister les fichiers/dossiers à ignorer (node_modules/, .env, dist/, *.log) pour ne jamais les committer.
Cliquer pour voir la questionQuelle commande affiche l'état compact ?
Cliquer pour révéler la réponsegit status --short (ou -s) : ??, A, M, D
Cliquer pour voir la questionQuelle différence entre git init et git clone ?
Cliquer pour révéler la réponseinit crée un dépôt vide local. clone copie un dépôt distant complet (init + remote + fetch).
Cliquer pour voir la questionComment éviter un dépôt dans un dépôt ?
Cliquer pour révéler la réponseVérifier pwd avant git init. Si fait : rm -rf sous-dossier/.git
Cliquer pour voir la questionQue doit contenir un README minimal ?
Cliquer pour révéler la réponseTitre, description, Installation, Usage — porte d'entrée du projet.
Cliquer pour voir la questionQuel dossier masqué contient toute la base Git locale ?
Quelle commande évite un dépôt imbriqué ?
Que fait git clone ?
Quelle ligne .gitignore ignore tous les .env sauf .env.example ?
# Créermkdir mon-projet && cd mon-projetgit init --initial-branch=maingit clone https://github.com/user/repo.gitgit clone git@github.com:user/repo.git
# Inspecterpwdls -lacat .git/HEADcat .git/configls .git/refs/heads/ls .git/objects
# Fichiers fondateursecho "node_modules/" > .gitignoreecho "# Titre" > README.mdcat .gitignorecat README.md
# Statusgit statusgit status --shortgit status --ignoredgit status -ugit remote -vDépôt initialisé et propre, passons à l’enregistrement de vos premiers fichiers : le cycle add → commit → log.