Skip to content

Quel est l'objectif principal de Git et comment cela aide-t-il à la gestion de code ?

Objectif principal de Git

L'objectif principal de Git, tel qu'expliqué dans les sources, est de fournir un système de gestion de contrôle de version (SCM).

Voici les buts et fonctionnalités clés de Git :

  • Gestion des modifications : Git est conçu pour vous permettre de gérer les modifications apportées aux fichiers au fil du temps.
  • Historique et réversibilité : Vous pouvez revenir en arrière et voir quelles étaient les modifications, ou même simplement revenir à une version précédente en cas d'erreur ou si vous "gâchez quelque chose".
  • Comparaison des versions : Il offre la capacité de comparer les différences entre différentes versions de fichiers.
  • Traçabilité des auteurs : Git permet de voir qui a modifié quoi, car il enregistre l'auteur et l'adresse e-mail lors de chaque "commit" (enregistrement dans l'historique).
  • Développement isolé avec les branches : Un objectif fondamental est de faciliter le travail sur de nouvelles fonctionnalités ou la correction de bugs sans affecter la branche principale (main) de votre projet.
    • Une branche est essentiellement une copie de votre branche principale à un moment donné.
    • Cela permet aux développeurs de créer des branches distinctes, d'y apporter toutes les modifications, et une fois qu'ils sont satisfaits de leur travail, de les fusionner à nouveau dans la branche principale. C'est ainsi que le développement logiciel fonctionne généralement.
  • Création de "snapshots" (instantanés) : Chaque "commit" agit comme la prise d'un instantané de votre dépôt à un moment donné, enregistrant l'état de tous vos fichiers. C'est comme écrire une entrée dans un "livre d'histoire".

En résumé, l'objectif principal de Git est d'offrir un contrôle de version robuste qui permet une gestion détaillée des modifications, la possibilité de revenir en arrière, la traçabilité des changements, et la facilitation du développement parallèle et de la collaboration grâce à l'utilisation de branches. Bien que Git soit un outil local, il constitue la base pour des plateformes comme GitHub qui étendent cette capacité à la collaboration dans le cloud.

Pourquoi utiliser Git ?

Git est principalement utilisé pour la gestion du contrôle de version (SCM). Voici les principales raisons pour lesquelles vous devriez utiliser Git, selon les informations fournies :

  • Gestion des modifications au fil du temps : Git vous permet de gérer les modifications apportées aux fichiers au fil du temps. Cela signifie que vous pouvez suivre chaque changement effectué dans votre projet.
  • Historique et réversibilité : Vous pouvez revenir en arrière et voir quelles étaient les modifications, ou même simplement revenir à une version précédente si vous faites une erreur ou "gâchez quelque chose". Si vous avez déjà "commité" un fichier (c'est-à-dire enregistré son état dans l'historique), vous pouvez toujours revenir à une version précédente ou récupérer cette version si nécessaire.
  • Comparaison des versions : Git offre la capacité de comparer les différences entre différentes versions de fichiers. Par exemple, vous pouvez voir l'ancien texte en rouge et le nouveau texte en vert lorsque vous comparez des modifications.
  • Traçabilité des auteurs : Il permet de voir qui a modifié quoi. Chaque fois que vous enregistrez une modification ("commit"), Git enregistre l'auteur et son adresse e-mail.
  • Développement isolé avec les branches : Un objectif fondamental est de faciliter le travail sur de nouvelles fonctionnalités ou la correction de bugs sans affecter la branche principale (main) de votre projet.
    • Une branche est essentiellement une copie de votre branche principale à un moment donné. Elle contient toutes les mêmes entrées dans le "livre d'histoire" (l'historique des commits) que la branche principale.
    • Cela permet de travailler sur de nouvelles fonctionnalités ou de corriger des bugs sans affecter la branche principale de votre projet. Une fois les modifications terminées et satisfaisantes, elles peuvent être fusionnées à nouveau dans la branche principale (main). C'est ainsi que le développement logiciel fonctionne généralement, avec des développeurs créant des branches distinctes pour leur travail.
  • Création de "snapshots" (instantanés) : Chaque "commit" agit comme la prise d'un instantané de votre dépôt à un moment donné. C'est comme écrire une entrée dans un "livre d'histoire". Cela vous permet de revenir à ce point précis dans le futur.
  • Gestion des fichiers : Git vous permet de suivre des fichiers spécifiques, d'ignorer certains fichiers ou dossiers (comme les fichiers sensibles ou générés automatiquement), de supprimer des fichiers et même de les restaurer s'ils ont été précédemment "commités", et de renommer des fichiers.
  • Environnements de travail : Git distingue trois environnements principaux : vos fichiers de travail (où vous apportez des modifications), la zone de "staging" (une "zone d'attente" pour les fichiers que vous êtes prêt à "commiter"), et l'historique des commits (où les modifications sont enregistrées de manière permanente).

En somme, Git fournit un système robuste pour le contrôle de version qui permet une gestion détaillée des modifications, la possibilité de revenir en arrière, la traçabilité des changements, et la facilitation du développement parallèle et de la collaboration grâce à l'utilisation de branches. Bien que Git soit un outil local, il constitue la base pour des plateformes comme GitHub qui étendent cette capacité à la collaboration dans le cloud.

Notion de branche

L'intégration de Git et GitHub repose sur leurs rôles complémentaires [Source non spécifiée, mais c'est le point de départ de la conversation précédente]. Git est un outil de contrôle de version local qui vous permet de gérer les modifications apportées aux fichiers au fil du temps et de revenir à des versions antérieures. GitHub est une plateforme d'hébergement où vous pouvez collaborer avec d'autres personnes sur vos dépôts Git.

La notion de branches est fondamentale dans Git et est essentielle pour la collaboration et la gestion des versions.

Qu'est-ce qu'une branche ?

Une branche est essentiellement une copie de votre branche principale (main) à un moment donné. Elle contient toutes les mêmes entrées dans le "livre d'histoire" (l'historique des commits) que la branche principale.

Pourquoi utiliser des branches ?

L'utilisation de branches permet de travailler sur de nouvelles fonctionnalités ou de corriger des bugs sans affecter la branche principale de votre projet. * Par exemple, si vous devez mettre à jour du texte sur un site web, vous pouvez créer une nouvelle version (une nouvelle branche), y apporter les modifications, et une fois que vous êtes sûr que les changements sont bons, les fusionner de nouveau dans la branche principale. * C'est ainsi que le développement logiciel fonctionne généralement : les développeurs créent des branches distinctes pour travailler sur de nouvelles fonctionnalités ou des corrections de bugs, et une fois leur travail terminé et satisfaisant, ils peuvent le fusionner de nouveau dans la branche principale (main).

La branche par défaut (main)

Au début de la configuration de Git, vous définissez le nom de la branche par défaut, qui est couramment appelée main.

Comment travailler avec les branches :

  1. Créer une nouvelle branche :

    • Vous pouvez créer une nouvelle branche en utilisant la commande git branch [NomDeLaBranche]. Par exemple, git branch FixTemp créera une branche nommée "FixTemp".
    • Une commande pratique qui crée la nouvelle branche et y bascule immédiatement est git switch -c [NomDeLaBranche]. Le -c signifie "créer".
  2. Voir les branches existantes :

    • Pour confirmer le nombre de branches et voir quelle est la branche active, vous pouvez taper git branch.
    • L'astérisque (*) indique la branche actuellement active.
  3. Basculer entre les branches :

    • Pour passer à une autre branche, vous utilisez la commande git switch [NomDeLaBranche]. Par exemple, git switch FixTemp vous fera passer à la branche "FixTemp".
    • Lorsque vous basculez de branche, les fichiers de votre répertoire local reflètent l'état de la branche vers laquelle vous avez basculé.
  4. Commiter des modifications sur une branche :

    • Lorsque vous apportez des modifications à des fichiers et que vous les commitez (en utilisant git commit), ces changements sont enregistrés dans l'historique de la branche active.
    • Les modifications effectuées dans une branche ne sont pas directement visibles dans d'autres branches tant qu'elles ne sont pas fusionnées.
  5. Fusionner des branches (git merge) :

    • Une fois que vous êtes satisfait des modifications apportées dans une branche (par exemple, "FixTemp"), vous pouvez les fusionner de nouveau dans la branche principale (main).
    • Pour fusionner, vous devez d'abord vous assurer que vous êtes sur la branche de destination (par exemple, main).
    • Ensuite, vous utilisez la commande git merge [NomDeLaBrancheÀFusionner], en y ajoutant souvent un message de commit avec -m. Par exemple, git merge -m "merge FixTemp back to main" FixTemp.
    • Après la fusion, les changements de la branche source sont intégrés dans la branche de destination.
  6. Gérer les conflits de fusion (Merge Conflicts) :

    • Un conflit de fusion se produit lorsque la branche principale (main) a été modifiée depuis que vous avez créé votre branche, et que ces modifications chevauchent celles que vous avez apportées dans votre branche.
    • Git vous informera qu'il y a des conflits et que la fusion a échoué.
    • Pour résoudre un conflit, vous devez ouvrir le fichier en question dans un éditeur de texte. Git insère des marqueurs spéciaux (<<<<<<< HEAD, =======, >>>>>>> [NomDeLaBranche]) qui indiquent les sections en conflit.
    • HEAD fait référence à la version actuelle de la branche sur laquelle vous êtes (par exemple, main), et l'autre section provient de la branche que vous essayez de fusionner.
    • Vous devez manuellement choisir la version que vous souhaitez conserver ou combiner les modifications.
    • Une fois les conflits résolus et le fichier sauvegardé, vous devez commiter ces changements pour finaliser la fusion.
  7. Supprimer une branche :

    • Après avoir fusionné les modifications d'une branche dans main, vous n'avez souvent plus besoin de cette branche temporaire.
    • Pour supprimer une branche, utilisez git branch -d [NomDeLaBranche]. Par exemple, git branch -d FixTemp supprimera la branche "FixTemp".

Branches et collaboration sur GitHub :

  • Dépôts Cloud : GitHub est un service qui permet d'héberger vos dépôts Git dans le cloud, ce qui facilite la collaboration.
  • Pull Requests (Demandes de Tirage) : C'est une fonctionnalité clé de GitHub pour la collaboration.
    • Lorsqu'un développeur apporte des modifications dans une branche séparée (souvent pour une nouvelle fonctionnalité ou une correction), il peut proposer ces changements à la branche principale via une "pull request".
    • Cela permet à d'autres membres de l'équipe de réviser le code, de discuter des changements et de les approuver avant qu'ils ne soient fusionnés dans la branche principale.
    • Une pull request peut être liée à une "issue" (problème ou tâche) et sa fusion peut automatiquement fermer l'issue correspondante.
  • Pousser toutes les branches vers GitHub : Vous pouvez pousser toutes vos branches locales vers votre dépôt GitHub en utilisant la commande git push --all. Votre dépôt GitHub montrera alors toutes vos branches, pas seulement la branche principale.

En somme, les branches sont des outils puissants dans Git qui vous permettent d'isoler le travail de développement et de gérer efficacement les modifications, tandis que GitHub exploite ce concept pour faciliter la collaboration d'équipe et la revue de code à travers des fonctionnalités comme les pull requests.