GitHub

11

Comme mentionné précédemment, lorsqu'un développeur utilise la commande Git push, il envoie une sauvegarde de son projet en ligne. Ainsi, lui et ses collègues y ont accès, peu importe leur emplacement. Cependant, pour fonctionner cette approche nécessite un espace en ligne.

C'est ici que GitHub entre en jeu!

Sans GitHub, il serait possible de faire des commits avec Git. Cependant, la portabilité et l'aspect collaboratif serait limité, puisqu'il serait impossible de faire des push sans avoir un espace sur un serveur pour les stocker.

Esprit de collaboration

Par défaut, héberger un projet sur GitHub est gratuit et beaucoup de projets sont publics afin de pouvoir être consultés/modifiés au besoin. Parmi ces projets, on retrouve plusieurs librairies connues, telles que:

Et d'organisations d'envergures.

L'aspect public peut à priori peut sembler étrange, mais il favorise grandement la collaboration entre développeurs, puisqu'il permet de:

  • Faire une copie d'un projet.
  • D'y apporter des modifications.
  • D'utiliser le projet modifié pour ses besoins ou encore de soumettre ses changements au(x) propriétaire(s) du projet. Ce que l'on appelle un pull request.

Création d'un répertoire

Pour créer un répertoire, il suffit d'être connecté à GitHub et de se rendre sur la page d'accueil. En haut à gauche de l'interface, un bouton New permet d'accéder à la page d'initialisation d'un nouveau repo.

Sur cette page, il suffit d'entrer le nom désiré du repo, une brève description et son statut (privé ou public).

De plus, il est possible de spécifier si un fichier README devrait être créé, de spécifier si l'on souhaite utiliser un .gitignore et si une licence devrait être attribuée au projet.

README

Le README sert à présenter un projet. Lorsque vous êtes sur la page d'accueil d'un répertoire, vous pouvez voir l'arborescence des fichiers le constituant suivis du README. Voici un exemple minimaliste.

Par défaut, si vous avez coché Initialize this repository with a README, un README sera créé avec le titre du repo et la description que vous avez entrée au moment de sa création. Il est possible de modifier ce fichier ultérieurement afin d'y incorporer plus d'informations si désirées.

Ce fichier indique généralement la raison d'être du projet et souvent comment l'utiliser. Sans lui, un projet ne ressemble qu'à une collection de fichiers pour quiconque n'ayant pas travaillé sur le projet.

Afin de simplifier/standardiser son affichage, son écriture ne se fait pas en HTML/CSS, mais en Markdown.

Gitignore

Le fichier .gitignore permet de spécifier à Git des fichiers et/ou dossiers à l'intérieur du repo qu'il ne devrait pas surveiller et pousser vers le serveur (GitHub).

Par exemple, il est possible d'avoir un fichier contenant ses identifications (nom d'usager et mot de passe) à la racine du projet. Cependant, ces informations ne devraient pas être disponibles à tous sur GitHub. Il est donc possible de spécifier d'ignorer ce fichier en ajoutant son nom et son extension dans le .gitignore, ex: identifiants.doc.

Parfois certains fichiers ne sont simplement pas pertinents au projet en soi. Par exemple, lors de la création d'un site WordPress, seul le thème développé compte réellement. Il est donc préférable de télécharger WordPress sur le site officiel de WordPress, afin d'avoir la version la récente et à l'intérieur de celui-ci, de télécharger le repo Git contenant le thème seul. Ainsi les mises à jour fréquentes de WordPress ne nécessitent pas de commits, push et pull pour l'équipe de développement.

Merci à GitHub pour cette collection de .gitignores permettant d'ignorer les fichiers de base de certains projets en fonction de leur nature.

Licenses

Si un repo n'a aucune licence, il est possible d'utiliser son contenu librement. Cependant, certaines licences vont spécifier:

  • de créditer l'auteur.
  • que son usage est réservé aux projets à but non lucratif.
  • de ne pas modifier le contenu.
  • etc.

Pour en savoir plus sur les licences, voir choosealicense.com

Clone

Si vous avez créé votre repo en ligne, il est probable que vous désirez éventuellement le modifier sur votre ordinateur. Pour ce faire, il faut repérer le bouton vert ⬇️ Code en haut à droite de votre page de répertoire.

En cliquant sur celui-ci, vous aurez les options de:

  • Copier l'url du répertoire, ce qui peut-être requis par certains logiciels concurrents à GitHub Desktop.
  • Cliquer sur Open with GitHub Desktop, l'option la plus facile si vous avez ce logiciel d'installé sur votre ordinateur.
  • Cliquer sur Download ZIP. Cependant, cette option ne gardera aucun lien entre votre version en ligne GitHub et la version que vous venez de télécharger. Il est donc préférable d'éviter cette option, dans la majorité des cas.

Gestion des accès au repo

Bien qu'un repo puisse être public et que tous puissent le cloner, il n'est pas possible pour quiconque de modifier sur GitHub, à moins d'en être l'auteur ou d'avoir obtenu la permission de celui-ci.

Évidemment, dans le cadre d'un projet en équipe, il est primordial de pouvoir donner le droit à ses collègues d'altérer le contenu du repo. Pour ce faire, il suffit d'aller sur la page GitHub du repo en question et de cliquer sur ⚙️ Settings. Ensuite dans l'onglet Manage access, il est possible de cliquer sur Invite a collaborator et de rechercher son collègue par son:

  • Nom d'usager GitHub
  • Nom complet
  • Courriel

Fork

Comme mentionné précédemment, pour modifier un repo en ligne, il faut en être l'auteur ou en avoir obtenu la permission. Néanmoins, il est possible d'être intéressé par un projet et de vouloir s'en servir comme point de départ pour créer son propre projet.

Pour ce faire, il est possible d'effectuer un fork. Cette commande copie le repo GitHub en question vers votre compte GitHub. Puisque cette copie du repo vous appartient, vous n'avez donc plus besoin de permissions afin d'effectuer des push sur celui-ci.

Pour ce faire, il faut cliquer sur le bouton Fork en au à droite du répertoire que l'on désire copier.

Tout l'historique du projet, jusqu'au moment du fork, sera copié sur votre repo. De plus, tous les changements effectués après le fork sur le repo d'origine seront ignorés sur votre copie du repo.

Pull request

Si vous avez effectué un Fork d'un projet et que vous considérez qu'il serait bénéfique pour le propriétaire du repo d'origine d'obtenir vos modifications, vous pouvez lui soumettre une demande de pull request ou en français, lui demander de tirer vos changements sur son répertoire.

Le propriétaire du repo d'origine recevra alors une notification lui indiquant votre demande et sera libre d'accepter ou refuser.

Pour ce faire, vous devez cliquer sur l'onglet Pull request en haut à gauche de la page de votre répertoire et cliquer sur le bouton vert New pull request. Vous devrez alors choisir le répertoire et la branche qui devraient recevoir vos changements et le ceux où vos changements se trouvent.

Anatomie d'un repo

Fil d'Ariane

En haut à gauche se trouve un fil d'Ariane correspondant au projet courant. Il permet d'identifier l'auteur ainsi que le nom du repo en question.

Menu d'actions

En haut à droite se trouve un menu d'actions constitué de trois boutons

  • Watch/Unwatch 👁️ pour être notifié de tous changements/discussions sur un projet.
  • Star/Unstar ⭐ pour démontrer son appréciation d'un projet et le sauvegarder dans sa liste de favoris sans la partie notifications.
  • Fork comme sur CodePen, permets de créer une copie du projet.

Navigation du projet

  • Code 👨🏻‍💻 permet de voir une arborescence des fichiers constituant le projet.
  • Issues permet de suivre des tâches, bogues ou encore demandes d'améliorations sur un projet.
  • Pull requests liste des corrections suggérées par des tiers au(x) propriétaire(s) du projet. Par exemple, avant de télécharger un projet et d'y effectuer une correction, il est judicieux de valider si un Pull request couvrant le problème trouvé n'a pas déjà été ouvert.
  • Actions sert à automatiser des tests et des déploiements en ligne. Par exemple, à chaque commit sur une branche spécifique, le code pourrait être envoyé sur un serveur pour mettre à jour le site web correspondant.
  • Projects permet de gérer et de visualiser l'évolution d'un projet de façon similaire à Trello.
  • Wiki tel Wikipedia, permet de documenter votre projet et de prendre des notes au besoin.
  • Security 🛡️ liste les vulnérabilités détectées sur un projet.
  • Insight permet de voir un rapport d'activité concernant le repo.
  • Settings ⚙️ permet d'ajuster les configurations de base du projet (Nom, Onglets disponibles, ajout de collaborateurs, etc.)

Sommaire

  • Commits nombre de commits ayant eux sur le projet. En cliquant sur cet onglet, il est possible d'accéder à l'historique du projet, commit par commit. Chaque commit est identifié par le commentaire laissé par le développeur au moment du commit, d'où l'importance d'inscrire des commentaires significatifs.
  • Branch(es) nombre de branches créées sur ce projet. En cliquant sur cet onglet, il est possible de voir un aperçu de l'ensemble des branches rattachées à un projet.
  • Packages permet d'établir un pont entre GitHub et NPM.
  • Releases permet d'identifier un commit en particulier pour références ultérieures. Par exemple, le dernier commit avant de mettre un site en ligne pourrait être le release v1.0 il y aurait probablement plusieurs autres commits par la suite, jusqu'à ce qu'une version deux soit prête qui pourrait à son tour être identifié v2.0.
  • Contributors qui a contribués au projet, quand et à quel niveau.

Gestion de branches

  • Branch indique la branche courante, par défaut Master. Au clic, cet onglet permet de changer la branche courante.
  • New pull request dans le cadre d'un projet qui a été Forké, permet de sélectionner la branche de du projet que l'on aimerait soumettre comme amélioration au projet d'origine.

Gestion de fichiers

  • Create a new file 📄 permet de créer un nouveau fichier directement à partir de GitHub.
  • Upload files 🔼 permet de téléverser des fichiers directement sur GitHub.
  • Find file 🔍 permet de rechercher par nom un fichier dans le repo.
  • Clone or download
    • Permets d'obtenir l'url du repo pour en faire une copie.
    • Permets via Open in Desktop d'ouvrir le projet directement dans GitHub Desktop.
    • Permets via Download ZIP de télécharger une copie du repo en format zip.

Alternatives

Il existe plusieurs alternatives à GitHub, notamment:
- Bitbucket
- GitLab 🥼

Néanmoins, GitHub étant le plus grand hébergeur de code source au monde (50 millions d'utilisateurs, + de 100 millions de projets), sera l'hébergeur enseigné dans le cadre de ce cours.

Donnez votre opinion
sur les notes de cours sur cette page.
Merci d'avoir partagé ton opinion 😎
Pssst, c'est 💯 anonyme