cours
Les 20 meilleures questions et réponses d'entretien sur Git pour tous les niveaux
Git est un outil essentiel dans la boîte à outils du développeur moderne, réputé pour ses puissantes capacités de contrôle de version. Créé par Linus Torvalds en 2005 pour soutenir le développement du noyau Linux, Git est depuis devenu l'épine dorsale d'innombrables projets logiciels dans le monde entier. Son efficacité et sa flexibilité dans la gestion des versions de projet, associées à un support solide pour la collaboration, en font un outil indispensable pour les équipes de toutes tailles.
Cet article a pour but de vous préparer aux entretiens techniques en couvrant les 20 meilleures questions d'entretien Git qui vont du niveau débutant au niveau avancé. Que vous soyez novice en matière de Git ou que vous cherchiez à approfondir vos connaissances, ces questions et réponses vous aideront à démontrer vos compétences et à réussir votre entretien. Plongeons dans les concepts et commandes clés que tout développeur doit maîtriser pour exceller dans sa connaissance de Git.
Questions d'entretien de base sur Git
Si vous êtes relativement novice en matière de Git, il est probable que certaines des questions de base de l'entretien porteront sur les concepts et les utilisations de base. Si vous avez besoin de vous rafraîchir la mémoire, n'hésitez pas à suivre le cours d'introduction à Git de DataCamp.
1. Qu'est-ce qu'un dépôt Git ?
Un dépôt Git stocke les fichiers et l'historique des révisions d'un projet et facilite le contrôle des versions en suivant les modifications apportées au fil du temps. Il peut se trouver localement dans un dossier sur votre appareil ou sur une plateforme en ligne comme GitHub. Cela permet aux utilisateurs de collaborer, de revenir à des versions antérieures et de gérer efficacement le développement de projets à l'aide de commandes telles que commit, push et pull.
2. Comment fonctionne Git ?
Git fonctionne en enregistrant les modifications apportées aux fichiers et aux répertoires d'un projet, capturant ainsi des instantanés de son évolution. Les utilisateurs peuvent superviser les modifications, créer des branches pour un développement simultané, fusionner les branches et revenir à des états antérieurs si nécessaire. Il favorise également la collaboration et assure un contrôle efficace des versions dans le cadre du développement de logiciels.
3. Qu'est-ce que git add
?
La commande git add
est utilisée dans Git pour mettre en place des modifications à inclure dans le prochain commit. Il prépare les modifications, les ajouts ou les suppressions effectués sur les fichiers du répertoire de travail, en les marquant pour qu'ils soient inclus dans l'instantané de livraison à venir. Notez que cette commande ne valide pas les modifications, mais les prépare pour la mise à disposition.
4. Qu'est-ce que git push
?
La commande git push
est utilisée dans Git pour télécharger le contenu d'un dépôt local vers un dépôt distant. Il transfère les modifications apportées au dépôt local vers un dépôt distant, généralement sur un serveur comme GitHub ou GitLab. Cette commande favorise la collaboration en permettant aux utilisateurs de partager leurs modifications avec d'autres personnes travaillant sur le même projet.
Vous pouvez en savoir plus sur Git push et pull dans notre tutoriel séparé.
5. Qu'est-ce que git status
?
La commande git status
affiche l'état actuel du référentiel dans Git. Il fournit des informations sur les fichiers qui ont été modifiés, sur ceux qui sont en attente de la prochaine livraison et sur ceux qui ne sont pas suivis. Il aide les utilisateurs à suivre l'avancement de leur travail et à identifier les modifications qui doivent être validées ou échelonnées.
6. Qu'est-ce qu'un commit dans Git ?
Un commit représente un instantané des modifications apportées aux fichiers d'un référentiel à un moment précis. Lorsque vous livrez des modifications dans Git, vous sauvegardez effectivement l'état actuel de vos fichiers et vous pouvez fournir un message descriptif expliquant les modifications apportées (ce qui est recommandé).
Chaque livraison crée un identifiant unique, ce qui vous permet de suivre l'historique des modifications dans le dépôt. Les commits jouent un rôle crucial dans le contrôle de version, car ils permettent de revenir à des états antérieurs du projet, de consulter l'historique des modifications et de collaborer avec d'autres personnes en partageant des mises à jour.
Consultez l'aide-mémoire Git de DataCamp pour vous aider à préparer vos entretiens.
7. Qu'est-ce que le branchement dans Git ?
Le branchement fait référence à la pratique consistant à s'écarter de la ligne principale de développement (généralement appelée branche "master") pour travailler sur de nouvelles fonctionnalités, des correctifs ou des expériences sans affecter la base de code principale. Il permet à plusieurs lignes de développement parallèles de coexister au sein d'un même référentiel.
Chaque branche représente une ligne de développement distincte avec son propre ensemble de commits, ce qui permet aux développeurs de travailler simultanément sur différentes fonctionnalités ou corrections. Les branches facilitent la collaboration, l'expérimentation et l'organisation au sein d'un projet, car les modifications apportées dans une branche peuvent être réintégrées dans la base de code principale une fois qu'elles sont terminées et testées.
8. Qu'est-ce qu'un conflit dans Git ?
Les conflits surviennent lorsque des modifications contradictoires sont apportées à la même partie d'un ou de plusieurs fichiers par différents contributeurs, généralement au cours d'une opération de fusion ou de rebase. Git ne peut pas résoudre automatiquement ces changements conflictuels, ce qui nécessite une intervention manuelle de l'utilisateur pour résoudre les divergences.
Ainsi, pour résoudre les conflits, les fichiers en conflit doivent être revus et modifiés sur la base de la meilleure réconciliation possible avant que la version résolue ne soit validée.
9. Qu'est-ce que la fusion dans Git ?
La fusion est une opération fondamentale de Git qui facilite la collaboration et l'intégration des modifications entre les différentes branches d'un projet. Une fusion est le processus qui consiste à combiner les modifications de différentes branches en une seule branche, généralement la branche principale (par exemple, master ou main).
Une fusion intègre les modifications apportées dans une branche à une autre, ce qui donne lieu à un nouveau commit qui combine les historiques des deux branches. Pour en savoir plus sur la résolution des conflits de fusion dans Git, consultez notre tutoriel séparé.
Devenez ingénieur en données
Questions d'entretien intermédiaires sur Git
10. Qu'est-ce qu'un remote dans Git ?
Une base de données distante est un référentiel hébergé sur un serveur ou un autre ordinateur pour la collaboration et le partage de code avec d'autres. Il s'agit d'un emplacement centralisé où les développeurs peuvent apporter leurs modifications locales et extraire les modifications apportées par d'autres.
Ils permettent le développement distribué et facilitent le travail d'équipe en fournissant un emplacement commun pour le stockage et la synchronisation du code du projet entre plusieurs contributeurs.
11. Quelle est la différence entre git fetch
et git pull
?
La principale différence entre git fetch et git pull réside dans ce qu'ils font et comment ils mettent à jour le dépôt local.
La commande git fetch
récupère les modifications d'un référentiel distant vers le référentiel local. Il met à jour les branches de suivi à distance (par exemple, origin/master) dans le référentiel local pour refléter l'état du référentiel distant, mais il ne met pas à jour le répertoire de travail ou ne fusionne pas les modifications dans la branche courante. Cela signifie qu'après la récupération, vous pouvez examiner les modifications apportées au dépôt distant sans affecter votre travail local.
La commande git pull
récupère également les modifications d'un dépôt distant, mais elle va plus loin en récupérant les modifications et en les fusionnant dans la branche actuelle en une seule étape. Il effectue essentiellement un git fetch suivi d'un git merge pour incorporer les modifications du dépôt distant dans la branche courante.
12. Comment revenir sur un commit qui a déjà été poussé et rendu public ?
La commande git revert
peut être utilisée pour revenir sur un commit qui a déjà été poussé et rendu public.
La procédure étape par étape est la suivante :
1. Identifiez le commit sur lequel vous souhaitez revenir en trouvant son hash de commit. Cela peut être fait en utilisant la commande git log
pour voir l'historique des livraisons et trouver le hachage de la livraison que vous voulez inverser.
2. Une fois que vous avez le hash du commit, utilisez la commande git revert suivie du hash du commit pour créer un nouveau commit qui annule les modifications introduites par le commit spécifié. Par exemple :
git revert <commit-hash>
3. Git ouvrira un éditeur de texte pour créer un message de validation pour le changement. Vous pouvez modifier le message si nécessaire, puis enregistrer et fermer l'éditeur.
4. Après avoir enregistré le message de validation, Git crée une nouvelle validation qui annule les modifications introduites par la validation spécifiée. Ce nouveau commit sera ajouté à l'historique, annulant ainsi les modifications apportées par le commit original.
5. Enfin, poussez le nouveau commit vers le dépôt distant pour rendre le revert public à l'aide de la commande suivante :
git push origin <branch-name>
L'utilisation de git revert
crée un nouveau commit qui annule les modifications introduites par le commit d'origine, ce qui revient à annuler les modifications sans modifier l'historique du commit. Cette approche est plus sûre que git reset
ou git amend
, qui peuvent modifier l'historique des livraisons et causer des problèmes aux collaborateurs qui ont déjà récupéré les modifications.
13. Qu'est-ce que git reset
faire ?
La commande git reset
réinitialise le HEAD actuel à un état spécifié. Cela signifie qu'il peut être utilisé pour annuler des modifications, dépiler des fichiers ou déplacer le pointeur HEAD vers un autre commit. Notez qu'il existe trois modes principaux de git reset
:
--soft
: Réinitialise le pointeur HEAD à un commit spécifique, ce qui permet de conserver les modifications par étapes. Les fichiers restent modifiés dans le répertoire de travail, ce qui vous permet de les valider à nouveau.
--mixed
: Réinitialise le pointeur HEAD à un commit spécifique, en annulant les changements. Les fichiers restent modifiés dans le répertoire de travail, mais les changements ne sont pas mis en scène pour la validation.
--hard
: Réinitialise le pointeur HEAD à un commit spécifique, en abandonnant toutes les modifications dans le répertoire de travail et la zone de transit. A utiliser avec précaution, car elle supprime définitivement les modifications non validées.
14. Qu'est-ce que git stash
?
git stash
est une commande Git qui stocke temporairement dans le répertoire de travail les modifications qui ne sont pas prêtes à être validées. Il permet aux développeurs de sauvegarder leurs modifications sans les intégrer au référentiel.
L'archivage est utile lorsque vous changez de branche, mais que vous ne voulez pas livrer ou perdre vos modifications. Plus tard, vous pouvez appliquer les modifications cachées à votre répertoire de travail ou les retirer de la pile de cache pour continuer à travailler dessus.
15. Qu'est-ce que git reflog
?
git reflog
est une commande Git utilisée pour afficher les journaux de référence, qui enregistrent les modifications apportées au pointeur HEAD et l'historique des modifications qui ont été extraites du référentiel. Il fournit une liste chronologique des actions récentes effectuées dans le dépôt, y compris les modifications, les extractions, les fusions et les réinitialisations.
Le reflog est utile pour récupérer les commits ou les branches perdus et pour comprendre la séquence des actions effectuées dans le référentiel.
16. Comment faire en sorte qu'une branche Git existante suive une branche distante ?
Pour qu'une branche Git existante suive une branche distante, vous pouvez utiliser la commande git branch avec l'option --set-upstream-to
ou -u
, suivie du nom de la branche distante.
La syntaxe se présente comme suit :
git branch --set-upstream-to=<remote-name>/<branch-name>
Ou bien...
git branch -u <remote-name>/<branch-name>
Questions d'entretien avancées sur Git
17. Comment gérer plusieurs configurations pour différents projets dans Git ?
Pour gérer différentes configurations, utilisez la commande git config avec les drapeaux --global
, --system
, ou --local
pour ajuster les paramètres de configuration à différents niveaux. Vous pouvez également utiliser includeIf dans la configuration de Git pour incorporer des configurations spécifiques basées sur le chemin d'accès au dépôt.
18. Comment gérer les fichiers volumineux avec Git ?
La gestion de fichiers volumineux dans Git peut s'avérer difficile en raison de leur impact sur la taille et les performances du référentiel. Utilisez Git LFS pour stocker des fichiers volumineux en dehors du référentiel Git tout en conservant des pointeurs légers vers ces fichiers dans le référentiel. Cela permet de réduire la taille du référentiel et d'améliorer les performances. Git LFS prend en charge différents fournisseurs de stockage et s'intègre parfaitement aux flux de travail Git.
19. Quelle est l'utilité de git submodule
et comment le mettre à jour ?
La commande git submodule
permet de gérer les dépendances externes au sein d'un dépôt Git. Il vous permet d'inclure des référentiels externes en tant que sous-modules dans votre référentiel principal. Cette fonction est utile lorsque vous souhaitez intégrer du code provenant de sources externes tout en le séparant de la base de code de votre projet principal.
Pour mettre à jour un sous-module dans Git, vous pouvez suivre les étapes suivantes :
- Naviguez jusqu'au répertoire du sous-module dans votre référentiel principal.
- Utilisez
git fetch
pour récupérer les dernières modifications du dépôt distant du sous-module. - Si vous voulez mettre à jour le dernier commit sur la branche suivie par le sous-module, vous pouvez utiliser
git pull
. - Si vous souhaitez mettre à jour un commit ou une branche spécifique, vous pouvez utiliser
git checkout
suivi du hash du commit ou du nom de la branche. - Une fois que vous avez mis à jour le sous-module dans l'état souhaité, vous devez valider les modifications dans le référentiel principal afin de refléter l'état du sous-module mis à jour.
20. Quelle est la signification de git push --force-with-lease
plus git push --force
?
L'approche git push --force-with-lease
est plus prudente que l'approche git push --force
pour forcer les modifications vers un référentiel distant, car elle empêche d'écraser accidentellement les modifications effectuées par d'autres personnes sur le référentiel distant.
Lorsque vous utilisez git push --force
, vous forcez vos modifications vers le référentiel distant, indépendamment du fait que d'autres personnes l'ont mis à jour depuis votre dernière récupération. Cela peut entraîner la perte involontaire du travail d'autres développeurs.
En revanche, git push --force-with-lease
est une alternative plus sûre. Il vérifie si la branche distante vers laquelle vous poussez a été mise à jour par d'autres personnes depuis votre dernière récupération. Si la branche distante a été mise à jour, le push est rejeté, ce qui vous évite d'écraser involontairement les modifications d'autres développeurs.
Se préparer à un entretien technique
Présenter vos connaissances et votre expérience de Git lors des entretiens est essentiel pour démontrer votre maîtrise du contrôle des versions et de la collaboration au sein des équipes de développement logiciel.
Examinons quelques conseils à suivre lors de la préparation de votre entretien technique pour communiquer efficacement vos compétences en matière de Git :
Comprendre les principes de base de Git
Assurez-vous d'avoir une solide compréhension des principes fondamentaux de Git, y compris les référentiels, les branchements, les fusions, les commits et les commandes de base telles que pull, push, clone et commit. Ces connaissances fondamentales constitueront la base de votre discussion au cours de l'entretien. Il est également utile de bien comprendre des principes essentiels comme le contrôle de version, de discerner les disparités entre Git et les autres systèmes de contrôle de version (VCS), et de comprendre leur importance dans le développement de logiciels.
Enfin, familiarisez-vous avec diverses méthodologies Git, telles que Git Flow, GitHub Flow et GitLab Flow. Évaluer les avantages et les inconvénients de chaque approche et discerner les situations dans lesquelles elles sont les plus bénéfiques.
Le guide complet de DataCamp sur Git est un bon point de départ pour vous familiariser avec les principes fondamentaux.
Acquérir une expérience pratique
Plus vous utilisez Git, plus vous renforcez vos connaissances. Une pratique régulière vous permet de vous familiariser avec les différentes commandes et procédures. Essayez d'intégrer Git dans votre travail quotidien pour gagner en visibilité. Veillez à expérimenter la création de branches, leur fusion et la résolution des conflits.
Si vous ne savez pas sur quels projets travailler pour acquérir une expérience pratique de Git, la participation à des projets open-source via des plateformes telles que GitHub est un excellent moyen de se familiariser avec les outils de collaboration et les flux de travail standard de l'industrie.
Apprenez les problèmes les plus courants et comment les résoudre
Vous rencontrerez certainement des problèmes lors de l'utilisation de Git. Les problèmes les plus courants sont les conflits de fusion, les états HEAD détachés, l'annulation des modifications et la récupération des modifications perdues. Le diagnostic des problèmes liés à Git améliore les compétences en matière de dépannage et favorise une meilleure compréhension des mécanismes sous-jacents de Git.
En résolvant activement les problèmes et en analysant les messages d'erreur, vous comprendrez mieux le fonctionnement interne de Git et développerez votre capacité à identifier et à résoudre les problèmes de manière efficace. Cette approche proactive permet d'atténuer les risques potentiels et de renforcer efficacement la confiance et l'expertise dans la gestion des flux de travail de contrôle des versions.
Entraînez-vous à des entretiens fictifs
En participant à des simulations d'entretien, les candidats peuvent identifier les points faibles de leurs connaissances de Git et de leurs compétences en matière de communication, ce qui leur permet de concentrer leurs efforts de préparation de manière efficace.
En outre, les simulations d'entretien offrent aux candidats des occasions précieuses d'affiner leurs capacités de résolution de problèmes en s'attaquant à des scénarios réalistes liés à Git et à des exercices de codage. Cet exercice pratique aide les candidats à prendre confiance en leurs compétences en matière de Git et à améliorer leur capacité à exprimer clairement leurs idées au cours de l'entretien.
Conclusion
Git est un puissant système de contrôle de version largement utilisé dans le développement de logiciels pour gérer les modifications de code, collaborer avec d'autres personnes et conserver l'historique du projet. La connaissance de Git est essentielle pour les entretiens techniques, car elle démontre la maîtrise d'outils et de flux de travail essentiels pour les développeurs, met en valeur les compétences en matière de collaboration et souligne la capacité à gérer efficacement le code dans un environnement d'équipe.
En outre, la compréhension des concepts et des commandes Git permet de mettre en place des pratiques efficaces de contrôle des versions, garantissant l'intégrité du code, la continuité du projet et la rationalisation des processus de développement. La connaissance de Git est donc inestimable pour les futurs ingénieurs et développeurs de logiciels qui souhaitent passer des entretiens techniques et poursuivre une carrière fructueuse.
Pour en savoir plus, consultez les ressources suivantes :

Poursuivez votre voyage Git dès aujourd'hui !
cours
GitHub Concepts
cursus
Data Engineer
blog
Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Nisha Arya Ahmed
20 min