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 ?

  1. git init

  2. git init --bare

  3. git init --shared

  4. git clone --server

Q2 : Vous voulez configurer votre email pour TOUS les dépôts de votre ordinateur. Quelle option utilisez-vous ?

  1. --local

  2. --system

  3. --global

  4. --file

Q3 : Comment renommer la branche par défaut (généralement master) en main dès l’initialisation du dépôt ?

  1. git init --branch main

  2. git init -b main

  3. git init --initial-branch=main

  4. Toutes les réponses ci-dessus.


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

  1. git clean -f

  2. git clean -d

  3. git clean -n

  4. git clean -x

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 ?

  1. git rm --cached <fichier>

  2. git restore --staged <fichier>

  3. git reset <fichier>

  4. Toutes les réponses ci-dessus.

Q6 : Quelle option de git commit permet de modifier le message du tout dernier commit effectué ?

  1. --fix

  2. --amend

  3. --edit

  4. --update

Q7 : Quelle est la différence entre git add . et git add -u ?

  1. Aucune.

  2. . ajoute les nouveaux fichiers, -u ne traite que les fichiers déjà suivis.

  3. -u ajoute tout, . seulement le dossier courant.

  4. . est plus rapide.


🌿 Section 3 : Branches & Fusions

Q8 : Quelle est la différence majeure entre git switch et git checkout pour changer de branche ?

  1. switch est plus rapide.

  2. checkout peut aussi restaurer des fichiers, switch est dédié uniquement aux branches.

  3. switch ne fonctionne que sur les serveurs.

  4. checkout est obsolète.

Q9 : Vous voulez fusionner la branche feature dans main mais en gardant un historique linéaire (sans commit de merge). Quelle technique utilisez-vous ?

  1. git merge --no-ff

  2. git rebase main depuis la branche feature.

  3. git cherry-pick

  4. git branch -m

Q10 : Que fait l’option --squash lors d’un git merge ?

  1. Elle compresse les fichiers pour prendre moins de place.

  2. Elle fusionne tous les commits de la branche source en un seul commit unique sur la branche cible.

  3. Elle supprime la branche source après fusion.

  4. Elle ignore les conflits.


🔄 Section 4 : Synchronisation & Remotes

Q11 : Quelle commande récupère les données du serveur mais ne modifie pas vos fichiers locaux ?

  1. git pull

  2. git fetch

  3. git update

  4. git clone

Q12 : Vous voulez envoyer une branche locale vers le serveur pour la première fois. Quelle option crée le lien de suivi (tracking) ?

  1. --first-time

  2. -u (ou --set-upstream)

  3. --link

  4. -f

Q13 : Quelle est la différence entre --force et --force-with-lease lors d’un push ?

  1. Aucune, ce sont des alias.

  2. --force-with-lease est plus dangereux.

  3. --force-with-lease échoue si quelqu’un d’autre a poussé des commits sur le serveur entre-temps.

  4. --force vérifie les permissions.


🔍 Section 5 : Historique & Débogage

Q14 : Quel outil permet de trouver par recherche binaire le commit exact qui a introduit un bug ?

  1. git blame

  2. git grep

  3. git bisect

  4. git reflog

Q15 : Quelle commande affiche qui a modifié chaque ligne d’un fichier pour la dernière fois ?

  1. git show

  2. git log --author

  3. git blame

  4. git status

Q16 : Vous avez supprimé une branche par erreur ou fait un reset hard. Comment retrouver le SHA-1 du commit perdu ?

  1. git log

  2. git reflog

  3. git fsck

  4. git status


📦 Section 6 : Sous-modules & Archivage

Q17 : Après avoir cloné un projet contenant des sous-modules, quelle commande les télécharge réellement ?

  1. git pull --sub

  2. git submodule init suivi de git submodule update

  3. git submodule install

  4. git get-sub

Q18 : Vous voulez créer un fichier .zip de votre code sans inclure le dossier .git. Quelle commande utilisez-vous ?

  1. git export

  2. git zip

  3. git archive

  4. tar -czf


⚠️ Section 7 : Annulation & Correction

Q19 : Quelle est la différence entre git reset --soft et git reset --hard ?

  1. --soft supprime les fichiers, --hard les garde.

  2. --soft annule le commit mais garde vos changements dans l’index. --hard détruit tout changement non committé.

  3. Ils sont identiques si on ne spécifie pas de fichier.

  4. --soft demande une confirmation.

Q20 : Comment annuler un commit déjà partagé sur un serveur public sans réécrire l’historique (pour ne pas perturber les collègues) ?

  1. git reset --hard

  2. git revert <commit>

  3. git checkout HEAD^

  4. git commit --amend

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

  1. git save

  2. git cache

  3. git stash

  4. git pause


⚙️ Section 8 : Maintenance & Divers

Q22 : Quelle commande Git permet de nettoyer les fichiers inutiles et d’optimiser la base de données locale ?

  1. git clean

  2. git prune

  3. git gc (Garbage Collect)

  4. git optimize

Q23 : Comment vérifier l’URL du dépôt distant configuré sous le nom origin ?

  1. git remote -v

  2. git remote show origin

  3. Les deux réponses ci-dessus.

  4. git config --remote

Q24 : Que fait la commande git cherry-pick <SHA> ?

  1. Elle sélectionne le meilleur auteur du projet.

  2. Elle applique un commit spécifique d’une autre branche sur la branche actuelle.

  3. Elle supprime les branches inutiles.

  4. Elle trie les fichiers par taille.


🕵️ Section 9 : Cas Avancés (Hors cours direct)

Q25 : Dans .gitignore, comment ignorer tous les fichiers .log sauf le fichier important.log ?

  1. *.log et !important.log

  2. *.log et keep important.log

  3. ignore all .log

  4. C’est impossible.

Q26 : Quelle commande affiche un historique très compact avec un graphique des branches en ASCII ?

  1. git log --pretty

  2. git log --oneline --graph --all

  3. git show-branches

  4. git branch --tree

Q27 : Qu’est-ce qu’un “Détached HEAD” ?

  1. Un bug critique de Git.

  2. Un état où vous n’êtes sur aucune branche, mais sur un commit spécifique.

  3. Un utilisateur sans droits d’accès.

  4. Un commit sans message.

Q28 : Comment changer l’éditeur de texte par défaut utilisé par Git (ex: passer de Vim à Nano) ?

  1. git config --global core.editor nano

  2. git set editor nano

  3. C’est impossible, Git utilise Vim par défaut.

  4. Modifier le fichier .git/editor

Q29 : Que fait git diff --cached ?

  1. Compare le dossier de travail et le dernier commit.

  2. Compare l’index (staging area) et le dernier commit.

  3. Compare deux branches distantes.

  4. Supprime le cache Git.

Q30 : Vous voulez chercher le mot “API_KEY” dans tout l’historique de tous les fichiers committés. Quel outil est le plus adapté ?

  1. git grep

  2. git log -S "API_KEY"

  3. git find

  4. git status


💡 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 !