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 :

  1. Comprendre les concepts clés et tes attentes :
  1. Les commandes de base
  • pour construire un commit, un historique (add, commit, restore)
  • pour analyser un historique (état des fichiers status, modifications apportées diff, lecture de l’historique log)
  • pour manipuler les branches (visualiser, créer branch, travailler switch/restore, fermer et intégrer un travail merge)
  • pour modifier un historique (derniers commits reset, ou plus large rebase)
  1. 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 :

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…

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 :

Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !