Skip to content
Commencer

Votre Premier Dépôt Git

SlidesPDFPPTX
Niveau : Beginner
Durée : 1h15

Prérequis

  • Avoir installé Git (Atelier 02)
  • Savoir ouvrir un terminal et naviguer (cd, ls, pwd)
  • Avoir configuré user.name et user.email

Objectifs d'apprentissage

  • Créer un dépôt Git avec git init et git clone
  • Comprendre l'anatomie du dossier .git (HEAD, config, objects, refs)
  • Maîtriser git status, .gitignore et les fichiers fondateurs README/LICENSE
  • Éviter les pièges : dépôts imbriqués, .git supprimé, init au mauvais endroit

Sans 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 repository

Après git init

mon-projet/
├── .git/ ← base de données versionnée
├── index.html
└── style.css
git status
# On branch main
# No commits yet

Pour un projet local qui n’existe pas encore sur GitHub :

Terminal window
mkdir mon-projet
cd mon-projet
git init
# ou explicite :
git init --initial-branch=main

--initial-branch=main évite l’ancienne branche master.

Option B — Récupérer l’existant (git clone)

Section titled “Option B — Récupérer l’existant (git clone)”

Pour un projet déjà sur GitHub :

Terminal window
git clone https://github.com/joinhashcode/workshops.git
# ou SSH :
git clone git@github.com:joinhashcode/workshops.git
cd workshops

clone fait 4 choses : init + remote add origin + fetch + checkout.

<pre dir="ltr" class="mermaid">flowchart LR A[git init&lt;br/&gt;vide] --&gt;|ajout fichiers| B[git add + commit] C[git clone&lt;br/&gt;distant] --&gt;|direct| D[dépôt complet + historique]</pre>

Commandes à exécuter

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_
Terminal window
pwd
# /workspace/mon-projet ✅ bon
git init
cd mon-projet/sous-dossier
git init
# ⚠️ dépôt dans un dépôt ! Évitez.

Vérifiez toujours avec pwd et ls -la.


Ne 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.)
<pre dir="ltr" class="mermaid">flowchart TD A[.git/] --&gt; B[HEAD&lt;br/&gt;branche courante] A --&gt; C[config&lt;br/&gt;user, remote, branch] A --&gt; D[objects/&lt;br/&gt;commits compressés] A --&gt; E[refs/heads/main&lt;br/&gt;pointeur commit] A --&gt; F[index&lt;br/&gt;Staging Area] E -.-&gt; G[commit a1b2c3&lt;br/&gt;parent: b0c9d8] D -.-&gt; G</pre>

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

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_

Les fichiers fondateurs : .gitignore, README.md, LICENSE

Section titled “Les fichiers fondateurs : .gitignore, README.md, LICENSE”

Sans .gitignore, vous commitez node_modules/, .env, dist/ par erreur.

# Dépendances
node_modules/
vendor/
# Secrets
.env
.env.local
*.pem
# Build
dist/
build/
.next/
coverage/
# OS / IDE
.DS_Store
Thumbs.db
.vscode/
.idea/
# Logs
*.log
npm-debug.log*

Règles :

  • *.log → tous les .log
  • !important.log → exception (ne pas ignorer)
  • dist/ → dossier
  • Utilisez les templates GitHub : https://github.com/github/gitignore
# Mon Projet
Description en une phrase.
## Installation
npm install
## Usage
npm run dev
Terminal window
# GitHub → Add a license → MIT (permissif) / Apache 2.0 / GPL
gh 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

bash
# Cliquez sur les commandes à gauche pour les exécuter dans le simulateur
hashcode-academy:~$_

Vérifier l’état : git status en détail

Section titled “Vérifier l’état : git status en détail”

git 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
Terminal window
git status
git status --short
git status -u # -u = untracked files mode
git status --ignored # voir les ignorés

Autres vérifications :

Terminal window
pwd # où suis-je ?
ls -la # .git visible ?
git log --oneline # historique (vide au début)
git remote -v # distant configuré ?


Question

Quelle commande initialise un nouveau dépôt Git ?

Cliquer pour révéler la réponse
Réponse

git init (ou git init --initial-branch=main pour forcer main)

Cliquer pour voir la question
Question

Que contient le dossier .git ?

Cliquer pour révéler la réponse
Réponse

HEAD, config, objects/, refs/heads/, index — toute la base locale : commits, branches, config.

Cliquer pour voir la question
Question

Peut-on modifier manuellement les fichiers dans .git ?

Cliquer pour révéler la réponse
Réponse

Non. Toujours passer par git config, git branch, etc. Risque de corruption.

Cliquer pour voir la question
Question

À quoi sert .gitignore ?

Cliquer pour révéler la réponse
Réponse

Lister les fichiers/dossiers à ignorer (node_modules/, .env, dist/, *.log) pour ne jamais les committer.

Cliquer pour voir la question
Question

Quelle commande affiche l'état compact ?

Cliquer pour révéler la réponse
Réponse

git status --short (ou -s) : ??, A, M, D

Cliquer pour voir la question
Question

Quelle différence entre git init et git clone ?

Cliquer pour révéler la réponse
Réponse

init crée un dépôt vide local. clone copie un dépôt distant complet (init + remote + fetch).

Cliquer pour voir la question
Question

Comment éviter un dépôt dans un dépôt ?

Cliquer pour révéler la réponse
Réponse

Vérifier pwd avant git init. Si fait : rm -rf sous-dossier/.git

Cliquer pour voir la question
Question

Que doit contenir un README minimal ?

Cliquer pour révéler la réponse
Réponse

Titre, description, Installation, Usage — porte d'entrée du projet.

Cliquer pour voir la question

Quel 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 ?


Terminal window
# Créer
mkdir mon-projet && cd mon-projet
git init --initial-branch=main
git clone https://github.com/user/repo.git
git clone git@github.com:user/repo.git
# Inspecter
pwd
ls -la
cat .git/HEAD
cat .git/config
ls .git/refs/heads/
ls .git/objects
# Fichiers fondateurs
echo "node_modules/" > .gitignore
echo "# Titre" > README.md
cat .gitignore
cat README.md
# Status
git status
git status --short
git status --ignored
git status -u
git remote -v

Votre Progression0%


Dépôt initialisé et propre, passons à l’enregistrement de vos premiers fichiers : le cycle add → commit → log.

Et maintenant ?

Prochain atelier

4. Les Commits

HashCode Workshops
Part of the JoinHashCode ecosystem

Ctrl + K Rechercher dans les workshops