Notre guide pour apprendre Git
Par Maxime Bréhin • Publié le 17 février 2020
• 5 min
Installation et configuration
Pour l’installation, on propose un guide qu’on met régulièrement à jour.
Ensuite il faut apporter quelques touches de personnalisation pour optimiser le comportement de Git. On paie ici le prix de la rétro-compatibilité souhaitée par la communauté. En gros toutes les nouveautés qui modifient des comportements de Git sont de base désactivées et doivent être consciemment activées via la configuration.
Notre objectif ici n’est pas de te décrire le fonctionnement ni même le détail de la conf, pour ça tu as accès à notre configuration partagée qu’on a gentiment documentée, et sinon l’article (qui commence à dater un poil) « Une configuration Git aux petits oignons ».
Si tu es utilisateur·rice du terminal, tu voudras probablement le tuner pour avoir certaines informations dans le prompt sans avoir à faire par exemple un git status
. Voici l’article qui va bien : « Oh My Posh, prompt esthétique et configurable ».
Pour travailler avec un serveur Git, il est important de pouvoir automatiser la connexion. Pour ça on passe par ce qu’on appelle des clés asymétriques. Pour tout savoir là-dessus, lis donc l’article « Comprendre et maîtriser les clés SSH », un de nos plus gros succès !
Apprendre Git
Git est très utilisé, populaire, tout ça tout ça… Du coup on trouve pléthore de docs plus ou moins bien fichues, mais il reste parfois des zones d’ombre, ou simplement certains sujets qui sont mal traités à notre goût. C’est ça qui a motivé l’écriture de la plupart de nos articles.
Avant de foncer tête baissée…
… je te fais quelques recommandations pour préparer ton apprentissage.
Git est un support, un outil dont il faut retenir avant tout les concepts fonctionnels. Les aspects techniques sont secondaires, tout comme les commandes. Tu les retrouveras dès lors que tu auras bien en tête à quoi te sert Git et ce que tu souhaites en faire.
Pour bien apprendre, voici les étapes clés qu’on te recommande :
- Comprendre les concepts clés et tes attentes :
- les zones, les états des fichiers
- ce que tu veux mettre dans une révision/un commit (un ou plusieurs fichiers, une partie des modifs d’un fichier…)
- ce que tu veux retranscrire dans un historique (à quoi doit ressembler «graphiquement» l’histoire de ton projet, et pourquoi ?)
- isoler / paralléliser du travail (intérêt fonctionnel des branches)
- travailler seul·e ou à plusieurs
- Les commandes de base
- pour construire un commit, un historique (
add
,commit
,restore
) - pour analyser un historique (état des fichiers
status
, modifications apportéesdiff
, lecture de l’historiquelog
) - pour manipuler les branches (visualiser, créer
branch
, travaillerswitch
/restore
, fermer et intégrer un travailmerge
) - pour modifier un historique (derniers commits
reset
, ou plus largerebase
)
- Plus dans le détail des commandes (options avancées, astuces…)
Maintenant, les ressources utiles
Pour la base, tu peux regarder la série « Les concepts clés de Git » sur la chaîne YouTube de Delicious Insights.
Une fois que tu as compris l’essentiel des mécanismes de base inhérents à Git, tu vas devoir apprendre les commandes usuelles. Tu peux alors choisir différentes approches :
- Un démarrage rapide avec le “everyday Git” qui résume les commandes les plus couramment utilisées ou avec cette “cheatsheet” dynamique imabattable !
- Tu peux parcourir le « Pro Git Book », documentation fonctionnelle officielle.
- Ou tu peux tenter d’apprendre à l’aide d’un tutoriel, en mode pas à pas.
Si tu veux manipuler et visualiser certains comportements de Git, on te propose 2 ressources géniales :
Apprendre plus et mieux
Après ça tu vas probablement vouloir creuser certains sujets essentiels :
Comment visualiser mon historique et y trouver une info précise, l’évolution d’une méthode sur la semaine écoulée, les derniers commits d’un membre de l’équipe… Ça, c’est lié au log Git. Tu peux donc regarder l’article suivant, et même si tu n’es pas utilisateur·rice du terminal, tu y découvriras l’étendue de la puissance du log : « git log : qui suis-je ? D’où viens-je ? Où vais-je ? ».
Comment manipuler mon historique, en commençant par apprendre à défaire les choses, mais sans angoisse, car avec Git on ne supprime jamais vraiment les commits… Là tu peux regarder du côté soit de notre article « Git reset : rien ne se perd, tout se transforme » (j’ai également fait une présentation sur ce sujet à Paris Web, dont voici la vidéo).
Quand tu seras serein·e avec le fait de défaire des choses dans Git, tu vas probablement vouloir passer à la vitesse supérieure et manipuler de manière plus large ton historique avec la commande rebase
. Vu que plein de gens ne saisissent pas la différence avec les fusions, on a un article « Bien utiliser Git merge et rebase » qui parle de tout ça.
Workflows
Attention, divulgâcheur : je n’ai pas la prétention ici de te décrire comment travailler sur tes projets. L’idée est plutôt de te donner certaines clés pour les analyser et choisir la meilleure organisation en conséquence. En résumé, l’idée est d’avant tout de te faire réfléchir sans contrainte liée à un outil, mais plutôt en te disant que l’outil doit s’adapter à ce que tu estimes être une gestion de projet optimale (et ça tombe bien, c’est comme ça que Git a été pensé 😁).
Les articles qui suivent peuvent être pris en totalité ou indépendamment les uns des autres. Ils ne sont pas toujours parfaitement à jour et ne nous satisfont pas forcément pleinement, mais c’est le sujet qui veut ça…
- Workflow Git : objectifs et principes généraux
- Développer des fonctionnalités en parallèle
- Livrer et maintenir des versions publiques
- Corriger des bugs
- Définir les conventions d’un projet
Même si on déconseille généralement de prendre un « workflow Git » existant, ça reste intéressant de voir certaines approches connues, ne serait-ce que pour juger du bon et du mauvais. Atlassian a fait un très bon article sur ce sujet, qui parle notamment du très populaire « Git Flow » 😱.
Les bonus appréciables
Les hooks
Les hooks sont essentiels pour nous permettre tout un tas d’automatisations en vue d’augmenter la qualité de nos projets et de nous rattraper par le col en cas d’erreur flagrantes. Toute une section leur est dédiée. L’article suivant décrit les grands principes qui les régissent : Hooks : automatisez et fiabilisez vos projets.
Submodules et subtrees, parce que ta vie est triste
Quand tu es puni·e et qu’on t’oblige à travailler avec les submodules, tu ne t’y retrouves pas ou peu, même après plusieurs années, simplement parce que les submodules, c’est compliqué pour répondre à des besoins très spécifiques. Nous aussi on a souffert quelques années avec ça, à se (re)prendre régulièrement les pieds dans le tapis avec des manips oubliées… Du coup on a écrit un roman pour tenter de mieux comprendre tout ça et d’éviter au mieux les pièges : « Comprendre et maîtriser les submodules Git ».
Mais en réalité, dans 99% des cas, quand on t’a imposé les submodules, c’est pour de mauvaises raisons ! Soit parce qu’on n’a pas compris qu’on peut faire pareil avec un gestionnaire de dépendances comme npm, bundler, composer, conan… ou parce qu’on n’a pas trop le choix en raison de l’architecture du projet, mais la plupart du temps on pourrait gérer ça avec les subtrees à la place. C’est juste qu’on ne les connaît pas parce qu’ils ne sont pas décrits dans la doc’ officielle : « Comprendre et maîtriser les subtrees Git ».
Et franchement, si tu n’as absolument pas le choix, tu t’en sortiras de toutes façons mieux avec la commande tierce-partie git subrepo
.
En vrac
Voici 2 articles pour finir qui te décrivent des fonctionnalités de Git un peu à la marge mais qui pourraient t’être utiles :