Voici la version enrichie de ton quiz Git pour Obsidian. J’ai ajouté l’analyse des propositions incorrectes pour chaque question afin de bien comprendre pourquoi elles ne conviennent pas dans le contexte donné.
🐙 Maîtrise de Git : Le Grand Quiz (30 Questions)
Instructions
Cliquez sur la flèche à côté de “Correction & Explication” pour révéler la réponse. Ce quiz teste votre connaissance des commandes, des options de sécurité et de la gestion de l’historique.
🔧 Section 1 : Initialisation & Configuration
Q1 : Quelle commande permet de créer un dépôt central (serveur) sans dossier de travail pour que les développeurs y poussent leur code ?
-
git init -
git init --bare -
git init --shared -
git clone --server
Correction & Explication
Réponse : 2
Justesse : Un dépôt
--barene contient que le contenu du dossier.git. C’est le format standard pour les serveurs (GitHub/GitLab) car personne n’y édite de fichiers directement.Pourquoi la 1 est fausse :
git initcrée un répertoire de travail (working directory) destiné à l’édition de fichiers locaux.Pourquoi la 3 est fausse :
--shareddéfinit les permissions d’accès au dépôt pour plusieurs utilisateurs mais ne supprime pas le dossier de travail.Pourquoi la 4 est fausse : Cette commande n’existe pas dans Git.
Q2 : Vous voulez configurer votre email pour TOUS les dépôts de votre ordinateur. Quelle option utilisez-vous ?
-
--local -
--system -
--global -
--file
Correction & Explication
Réponse : 3
Justesse :
--globalécrit dans~/.gitconfiget s’applique à tous les projets de l’utilisateur actuel.Pourquoi la 1 est fausse :
--localn’écrit que dans le dépôt actuel (.git/config).Pourquoi la 2 est fausse :
--systems’applique à tous les utilisateurs de la machine (souvent/etc/gitconfig), ce qui est trop large.Pourquoi la 4 est fausse :
--filepermet de lire/écrire dans un fichier spécifique, mais n’est pas un niveau de configuration standard de Git.
Q3 : Comment renommer la branche par défaut (généralement master) en main dès l’initialisation du dépôt ?
-
git init --branch main -
git init -b main -
git init --initial-branch=main -
Toutes les réponses ci-dessus.
Correction & Explication
Réponse : 4
- Justesse : Les trois syntaxes sont des alias valides.
-best le raccourci de--initial-branch.
📝 Section 2 : Gestion des fichiers & Staging
Q4 : Quelle commande permet de voir quels fichiers seraient supprimés par git clean sans réellement les effacer ?
-
git clean -f -
git clean -d -
git clean -n -
git clean -x
Correction & Explication
Réponse : 3
Justesse :
-n(ou--dry-run) liste les fichiers qui vont être supprimés sans agir.Pourquoi la 1 est fausse :
-f(force) exécute la suppression réelle.Pourquoi la 2 est fausse :
-dindique à Git de supprimer aussi les dossiers vides non suivis.Pourquoi la 4 est fausse :
-xsupprime aussi les fichiers normalement ignorés par le.gitignore.
Q5 : Vous avez fait un git add sur un fichier par erreur. Comment le retirer de l’index (staging) sans perdre vos modifications dans le fichier ?
-
git rm --cached <fichier> -
git restore --staged <fichier> -
git reset <fichier> -
Toutes les réponses ci-dessus.
Correction & Explication
Réponse : 4
- Justesse : Toutes ces commandes permettent de “désindexer” le fichier tout en gardant le contenu sur le disque.
restore --stagedest la recommandation moderne.
Q6 : Quelle option de git commit permet de modifier le message du tout dernier commit effectué ?
-
--fix -
--amend -
--edit -
--update
Correction & Explication
Réponse : 2
Justesse :
--amendremplace le dernier commit par un nouveau contenant vos changements actuels ou un message modifié.Pourquoi la 1 est fausse :
--fixn’est pas une option standard (souvent confondue avecfixupen rebase interactif).Pourquoi la 3 est fausse :
--edit(ou-e) est utilisé pour ouvrir l’éditeur, mais ne permet pas de modifier un commit passé seul.Pourquoi la 4 est fausse : Cette option n’existe pas pour la commande
commit.
Q7 : Quelle est la différence entre git add . et git add -u ?
-
Aucune.
-
.ajoute les nouveaux fichiers,-une traite que les fichiers déjà suivis. -
-uajoute tout,.seulement le dossier courant. -
.est plus rapide.
Correction & Explication
Réponse : 2
Justesse :
-u(update) ignore les fichiers “untracked”.Pourquoi la 1 est fausse :
.inclut les nouveaux fichiers alors que-une le fait pas.Pourquoi la 3 est fausse : C’est l’inverse :
.ajoute tout le contenu du dossier courant, incluant les nouveaux fichiers.Pourquoi la 4 est fausse : La vitesse n’est pas le critère de distinction.
🌿 Section 3 : Branches & Fusions
Q8 : Quelle est la différence majeure entre git switch et git checkout pour changer de branche ?
-
switchest plus rapide. -
checkoutpeut aussi restaurer des fichiers,switchest dédié uniquement aux branches. -
switchne fonctionne que sur les serveurs. -
checkoutest obsolète.
Correction & Explication
Réponse : 2
Justesse :
switcha été créé pour éviter la confusion decheckoutqui servait à la fois à changer de branche et à écraser des fichiers locaux.Pourquoi la 1 est fausse : Ils ont la même performance.
Pourquoi la 3 est fausse : Les deux sont des commandes locales.
Pourquoi la 4 est fausse :
checkoutn’est pas obsolète mais “déconseillé” aux débutants pour limiter les erreurs.
Q9 : Vous voulez fusionner la branche feature dans main mais en gardant un historique linéaire (sans commit de merge). Quelle technique utilisez-vous ?
-
git merge --no-ff -
git rebase maindepuis la branchefeature. -
git cherry-pick -
git branch -m
Correction & Explication
Réponse : 2
Justesse : Rebaser permet de réécrire l’historique de
featureau-dessus demainpour permettre une fusion “Fast-forward”.Pourquoi la 1 est fausse :
--no-ffforce justement la création d’un commit de merge, brisant la linéarité.Pourquoi la 3 est fausse :
cherry-pickcopie des commits un par un, c’est fastidieux pour toute une branche.Pourquoi la 4 est fausse :
-msert uniquement à renommer une branche.
Q10 : Que fait l’option --squash lors d’un git merge ?
-
Elle compresse les fichiers pour prendre moins de place.
-
Elle fusionne tous les commits de la branche source en un seul commit unique sur la branche cible.
-
Elle supprime la branche source après fusion.
-
Elle ignore les conflits.
Correction & Explication
Réponse : 2
Justesse : Cela permet de condenser 50 petits commits de développement en un seul propre sur
main.Pourquoi la 1 est fausse : Git ne compresse pas les fichiers via cette commande.
Pourquoi la 3 est fausse : La branche source doit être supprimée manuellement après.
Pourquoi la 4 est fausse : Les conflits doivent toujours être résolus manuellement.
🔄 Section 4 : Synchronisation & Remotes
Q11 : Quelle commande récupère les données du serveur mais ne modifie pas vos fichiers locaux ?
-
git pull -
git fetch -
git update -
git clone
Correction & Explication
Réponse : 2
Justesse :
fetchtélécharge les objets et les références, mais ne touche pas à votreworking directory.Pourquoi la 1 est fausse :
pullfait unfetchpuis unmergeautomatique qui modifie vos fichiers.Pourquoi la 3 est fausse :
updaten’est pas une commande Git standard (souvent utilisée dans SVN).Pourquoi la 4 est fausse :
clonecrée un tout nouveau dépôt et fait un checkout initial.
Q12 : Vous voulez envoyer une branche locale vers le serveur pour la première fois. Quelle option crée le lien de suivi (tracking) ?
-
--first-time -
-u(ou--set-upstream) -
--link -
-f
Correction & Explication
Réponse : 2
Justesse :
-ulie la branche locale à la branche distante pour faciliter les futurspulletpush.Pourquoi la 1/3 sont fausses : Ce ne sont pas des options valides pour
push.Pourquoi la 4 est fausse :
-f(force) écrase l’historique distant sans créer de lien de suivi.
Q13 : Quelle est la différence entre --force et --force-with-lease lors d’un push ?
-
Aucune, ce sont des alias.
-
--force-with-leaseest plus dangereux. -
--force-with-leaseéchoue si quelqu’un d’autre a poussé des commits sur le serveur entre-temps. -
--forcevérifie les permissions.
Correction & Explication
Réponse : 3
Justesse : C’est une sécurité qui vérifie que votre version locale du serveur est à jour avant d’écraser.
Pourquoi la 1 est fausse : Ce sont deux comportements différents.
Pourquoi la 2 est fausse : Au contraire, c’est l’option la plus sûre des deux.
Pourquoi la 4 est fausse :
forceignore l’état du serveur ; la vérification des permissions est gérée par le serveur lui-même, pas par l’option.
🔍 Section 5 : Historique & Débogage
Q14 : Quel outil permet de trouver par recherche binaire le commit exact qui a introduit un bug ?
-
git blame -
git grep -
git bisect -
git reflog
Correction & Explication
Réponse : 3
Justesse :
bisectdécoupe l’historique en deux pour identifier rapidement le commit coupable.Pourquoi la 1 est fausse :
blamemontre qui a modifié une ligne, mais pas si la ligne est buggée.Pourquoi la 2 est fausse :
grepcherche du texte, pas un changement d’état (bug).Pourquoi la 4 est fausse :
reflogest un journal des mouvements de HEAD, pas un outil de débogage de code.
Q15 : Quelle commande affiche qui a modifié chaque ligne d’un fichier pour la dernière fois ?
-
git show -
git log --author -
git blame -
git status
Correction & Explication
Réponse : 3
Justesse :
blameannote chaque ligne d’un fichier avec l’auteur et le commit.Pourquoi la 1 est fausse :
showaffiche les détails d’un seul objet (souvent un commit).Pourquoi la 2 est fausse :
log --authorfiltre les commits d’un auteur mais ne détaille pas les lignes de fichiers.Pourquoi la 4 est fausse :
statusmontre l’état actuel (modifié/stagé) des fichiers.
Q16 : Vous avez supprimé une branche par erreur ou fait un reset hard. Comment retrouver le SHA-1 du commit perdu ?
-
git log -
git reflog -
git fsck -
git status
Correction & Explication
Réponse : 2
Justesse :
refloggarde trace de toutes les actions, même celles qui ne sont plus dans l’historique visible.Pourquoi la 1 est fausse :
logne montre que les commits accessibles depuis la branche actuelle.Pourquoi la 3 est fausse :
fsckvérifie l’intégrité de la base de données, mais n’est pas l’outil primaire pour naviguer dans l’historique perdu.Pourquoi la 4 est fausse :
statusne montre que les changements non commités.
📦 Section 6 : Sous-modules & Archivage
Q17 : Après avoir cloné un projet contenant des sous-modules, quelle commande les télécharge réellement ?
-
git pull --sub -
git submodule initsuivi degit submodule update -
git submodule install -
git get-sub
Correction & Explication
Réponse : 2
Justesse :
initenregistre les chemins etupdaterécupère le contenu.Pourquoi la 1/3/4 sont fausses : Ce ne sont pas des commandes Git existantes.
Q18 : Vous voulez créer un fichier .zip de votre code sans inclure le dossier .git. Quelle commande utilisez-vous ?
-
git export -
git zip -
git archive -
tar -czf
Correction & Explication
Réponse : 3
Justesse :
archivecrée un package du contenu du dépôt à un état précis sans les métadonnées Git.Pourquoi la 1/2 sont fausses : Commandes inexistantes.
Pourquoi la 4 est fausse :
tarest un outil système qui inclurait le dossier.gits’il est présent dans le répertoire.
⚠️ Section 7 : Annulation & Correction
Q19 : Quelle est la différence entre git reset --soft et git reset --hard ?
-
--softsupprime les fichiers,--hardles garde. -
--softannule le commit mais garde vos changements dans l’index.--harddétruit tout changement non committé. -
Ils sont identiques si on ne spécifie pas de fichier.
-
--softdemande une confirmation.
Correction & Explication
Réponse : 2
Justesse :
--hardréinitialise tout (index + working directory) alors que--softne touche qu’à l’historique.Pourquoi la 1 est fausse : C’est exactement l’inverse.
Pourquoi la 3 est fausse : Ils ont des effets très différents sur votre travail en cours.
Pourquoi la 4 est fausse : Git ne demande jamais de confirmation par défaut.
Q20 : Comment annuler un commit déjà partagé sur un serveur public sans réécrire l’historique (pour ne pas perturber les collègues) ?
-
git reset --hard -
git revert <commit> -
git checkout HEAD^ -
git commit --amend
Correction & Explication
Réponse : 2
Justesse :
revertcrée un nouveau commit “inverse”, ce qui est sûr pour le travail collaboratif.Pourquoi la 1/4 sont fausses : Ces commandes réécrivent l’historique, ce qui est interdit sur une branche partagée (risque de conflits majeurs pour les autres).
Pourquoi la 3 est fausse : Cela déplace juste votre
HEADmais ne crée pas d’annulation officielle.
Q21 : Vous travaillez sur une tâche mais devez changer de branche en urgence sans committer votre travail inachevé. Quelle commande sauve vos modifs de côté ?
-
git save -
git cache -
git stash -
git pause
Correction & Explication
Réponse : 3
Justesse :
stashmet vos modifications dans une pile temporaire.Pourquoi la 1/2/4 sont fausses : Commandes inexistantes.
⚙️ Section 8 : Maintenance & Divers
Q22 : Quelle commande Git permet de nettoyer les fichiers inutiles et d’optimiser la base de données locale ?
-
git clean -
git prune -
git gc(Garbage Collect) -
git optimize
Correction & Explication
Réponse : 3
Justesse :
gccompresse l’historique et nettoie les objets orphelins.Pourquoi la 1 est fausse :
cleansupprime les fichiers non suivis du disque.Pourquoi la 2 est fausse :
prunesupprime les objets orphelins mais fait partie degc.Pourquoi la 4 est fausse : Commande inexistante.
Q23 : Comment vérifier l’URL du dépôt distant configuré sous le nom origin ?
-
git remote -v -
git remote show origin -
Les deux réponses ci-dessus.
-
git config --remote
Correction & Explication
Réponse : 3
Justesse :
-vdonne les URL brutes,show origindonne un rapport détaillé.Pourquoi la 4 est fausse :
git config --remoten’est pas la syntaxe correcte.
Q24 : Que fait la commande git cherry-pick <SHA> ?
-
Elle sélectionne le meilleur auteur du projet.
-
Elle applique un commit spécifique d’une autre branche sur la branche actuelle.
-
Elle supprime les branches inutiles.
-
Elle trie les fichiers par taille.
Correction & Explication
Réponse : 2
Justesse : Permet de ramener un correctif précis sans fusionner toute une branche.
Pourquoi la 1/3/4 sont fausses : Ce sont des définitions fantaisistes.
🕵️ Section 9 : Cas Avancés (Hors cours direct)
Q25 : Dans .gitignore, comment ignorer tous les fichiers .log sauf le fichier important.log ?
-
*.loget!important.log -
*.logetkeep important.log -
ignore all .log -
C’est impossible.
Correction & Explication
Réponse : 1
- Justesse : Le
!est l’opérateur de négation dans le.gitignore.
Q26 : Quelle commande affiche un historique très compact avec un graphique des branches en ASCII ?
-
git log --pretty -
git log --oneline --graph --all -
git show-branches -
git branch --tree
Correction & Explication
Réponse : 2
Justesse : C’est la commande de visualisation standard.
Pourquoi la 1 est fausse :
--prettynécessite un format spécifique après pour être utile.Pourquoi la 3/4 sont fausses : Commandes inexistantes.
Q27 : Qu’est-ce qu’un “Détached HEAD” ?
-
Un bug critique de Git.
-
Un état où vous n’êtes sur aucune branche, mais sur un commit spécifique.
-
Un utilisateur sans droits d’accès.
-
Un commit sans message.
Correction & Explication
Réponse : 2
Justesse : Arrive quand on fait un
checkoutsur un commit ou un tag plutôt que sur une branche.Pourquoi la 1 est fausse : Ce n’est pas un bug, c’est un comportement normal pour explorer le passé.
Pourquoi la 3/4 sont fausses : Définitions fausses.
Q28 : Comment changer l’éditeur de texte par défaut utilisé par Git (ex: passer de Vim à Nano) ?
-
git config --global core.editor nano -
git set editor nano -
C’est impossible, Git utilise Vim par défaut.
-
Modifier le fichier .git/editor
Correction & Explication
Réponse : 1
- Justesse :
core.editorest la clé de configuration correcte.
Q29 : Que fait git diff --cached ?
-
Compare le dossier de travail et le dernier commit.
-
Compare l’index (staging area) et le dernier commit.
-
Compare deux branches distantes.
-
Supprime le cache Git.
Correction & Explication
Réponse : 2
Justesse : Permet de voir ce que l’on va réellement committer.
Pourquoi la 1 est fausse : C’est le rôle de
git diffsans option.
Q30 : Vous voulez chercher le mot “API_KEY” dans tout l’historique de tous les fichiers committés. Quel outil est le plus adapté ?
-
git grep -
git log -S "API_KEY" -
git find -
git status
Correction & Explication
Réponse : 2
Justesse : L’option
-S(pickaxe) cherche les commits où le nombre d’occurrences d’une chaîne change.Pourquoi la 1 est fausse :
grepcherche dans l’état actuel des fichiers, pas dans l’historique complet.
💡 Conclusion
Si vous avez obtenu plus de 25/30, vous avez une excellente maîtrise des workflows Git. Pour Obsidian, n’oubliez pas d’utiliser le mode Lecture pour profiter des Callouts repliables !