Cours de GIT avec GitHub

Aux développeurs web aux développeurs d’applications, Git est utile à tous ceux qui écrivent du code ou lors de modifications apportées aux fichiers code source. Du coup de quoi a-t-on besoin pour remédier à cela ?

Qu’est-ce que Git ?

Git est le système de contrôle de version le plus couramment utilisé. Git suit les modifications que vous apportez aux fichiers, ce qui vous permet d’avoir une trace de ce qui a été fait et de revenir à des versions spécifiques si vous en avez besoin. Git facilite également la collaboration, en permettant aux modifications apportées par plusieurs personnes d’être fusionnées dans une seule source.

Que vous écriviez du code que vous seul verrez ou que vous travailliez en équipe, Git vous sera utile.

Git est un logiciel qui fonctionne localement. Vos fichiers et leur historique sont stockés sur votre ordinateur. Vous pouvez également utiliser des hôtes en ligne (tels que GitHub ou Bitbucket) pour stocker une copie des fichiers et leur historique de révision. Le fait d’avoir un endroit centralisé où vous pouvez télécharger vos modifications et télécharger celles des autres vous permet de collaborer plus facilement avec d’autres développeurs. Git peut fusionner automatiquement les modifications, de sorte que deux personnes peuvent même travailler sur différentes parties d’un même fichier et fusionner ensuite ces modifications sans perdre le travail de l’autre !

Façons d’utiliser Git

Git est un logiciel auquel vous pouvez accéder via une ligne de commande (terminal) ou une application de bureau dotée d’une interface utilisateur graphique (GUI), comme Sourcetree, illustré ci-dessous.

Dépôts Git

Un dépôt Git (ou repo en abrégé) contient tous les fichiers du projet et l’historique complet des révisions. Vous prenez un dossier ordinaire de fichiers (comme le dossier racine d’un site web), et vous demandez à Git d’en faire un dépôt. Cela crée un sous-dossier .git, qui contient toutes les métadonnées Git pour le suivi des modifications.

Sur les systèmes d’exploitation basés sur Unix tels que macOS, les fichiers et les dossiers qui commencent par un point (.) sont cachés. Vous ne verrez donc pas le dossier .git dans le Finder de macOS, à moins d’afficher les fichiers cachés, mais il est là ! Vous pourrez peut-être le voir dans certains éditeurs de code.

Fichiers Stage & Commit

Pensez à Git comme à une liste des modifications apportées aux fichiers. Alors comment dire à Git d’enregistrer nos changements ? Chaque changement enregistré dans un fichier ou un ensemble de fichiers est appelé un commit.

Avant de faire un commit, nous devons indiquer à Git quels fichiers nous voulons commiter. Ceci est appelé staging et utilise la commande add. Pourquoi devons-nous faire cela ? Pourquoi ne pouvons-nous pas simplement commiter le fichier directement ? Disons que vous travaillez sur deux fichiers, mais qu’un seul d’entre eux est prêt à être livré. Vous ne voulez pas être forcé de livrer les deux fichiers, juste celui qui est prêt. C’est là que la commande add de Git entre en jeu. Nous ajoutons des fichiers à une zone d’indexation, et ensuite nous livrons les fichiers qui ont été indexés.

Dépôts à distance (sur GitHub et Bitbucket)

Le stockage d’une copie de votre dépôt Git chez un hébergeur en ligne (tel que GitHub ou Bitbucket) vous donne un endroit centralisé où vous pouvez télécharger vos modifications et télécharger celles des autres, ce qui vous permet de collaborer plus facilement avec d’autres développeurs. Après avoir configuré un référentiel distant, vous y téléchargez (push) vos fichiers et l’historique des révisions. Lorsque quelqu’un d’autre apporte des modifications à un dépôt distant, vous pouvez télécharger (pull) ses modifications dans votre dépôt local.

Branches et fusion

Git vous permet de créer des branches à partir de la base de code originale. Cela vous permet de travailler plus facilement avec d’autres développeurs et vous donne beaucoup de flexibilité dans votre flux de travail.

Voici un exemple de l’utilité des branches Git. Disons que vous devez travailler sur une nouvelle fonctionnalité pour un site web. Vous créez une nouvelle branche et commencez à travailler. Vous n’avez pas terminé votre nouvelle fonctionnalité, mais vous recevez une demande de modification urgente qui doit être mise en ligne sur le site aujourd’hui. Vous revenez sur la branche principale, effectuez la modification et la mettez en ligne. Vous pouvez ensuite revenir à la branche de votre nouvelle fonctionnalité et terminer votre travail. Lorsque vous avez terminé, vous fusionnez la branche de la nouvelle fonctionnalité avec la branche principale et la nouvelle fonctionnalité ainsi que la modification urgente sont conservées !

Lorsque vous fusionnez deux branches (ou fusionnez une branche locale et une branche distante), vous pouvez parfois obtenir un conflit. Par exemple, vous et un autre développeur travaillez tous deux, sans le savoir, sur la même partie d’un fichier. L’autre développeur pousse ses changements vers le dépôt distant. Lorsque vous les transférez ensuite dans votre dépôt local, vous obtenez un conflit de fusion. Heureusement, Git a une façon de gérer les conflits, de sorte que vous pouvez voir les deux ensembles de changements et décider de ceux que vous voulez garder.

Demandes d’extraction

Les demandes d’extraction sont un moyen de discuter des modifications avant de les intégrer à votre base de données. Disons que vous gérez un projet. Un développeur apporte des modifications sur une nouvelle branche et souhaite fusionner cette branche avec le master. Il peut créer une demande de retrait pour vous notifier de revoir son code. Vous pouvez discuter des modifications et décider si vous voulez les fusionner ou non.

Toutes les commandes bases pour Git

Git config

git config --global user.email sam@google.com

Git init

git init

Git add

git add .

ou pour un fichier spécifique

git add fichier.php

Git clone

git clone urldelabranche

Git commit

git commit –m "Description de votre commit"

Git status

vous permet de savoir quels sont les fichiers et dossiers qui ont été modifiés et ajoutés

git status

Git push

git push origin master