Si vous souhaitez devenir développeur de logiciels professionnel, vous devrez vous familiariser avec GitHub. Que vous partagiez vos projets personnels, que vous travailliez sur le code d’entreprise ou que vous utilisiez ou contribuiez à un projet open source, il y a de fortes chances que vous utilisiez GitHub.
Dans cet article, nous examinerons ce qu’est GitHub, les problèmes qu’il est conçu pour résoudre, et nous examinerons les bases de la création, de la copie et de la contribution à des projets hébergés sur GitHub. Avant de commencer, assurez-vous que Git est configuré sur votre ordinateur !
A lire : Comment débuter en programmation informatique : 3 étapes
Qu’est-ce que GitHub?
GitHub est un site Web qui vous permet d’enregistrer, de télécharger et de collaborer sur du code avec d’autres personnes. Si vous n’avez pas encore de compte, c’est le bon moment pour en créer un! Rendez-vous simplement sur https://github.com/ et saisissez un nom d’utilisateur, une adresse e-mail et un mot de passe valides, puis cliquez sur le bouton « S’inscrire à GitHub ».
Pourquoi c’est important?
Pour comprendre l’importance de GitHub, il faut remonter à 2009. À l’époque, les logiciels open source devenaient populaires, mais la plupart des projets reposaient encore sur un petit nombre de contributeurs. Pourquoi? Parce que si vous vouliez apporter une amélioration à un projet open source, vous deviez écrire le code, l’enregistrer à l’aide d’un système de contrôle de version et ensuite envoyer le «patch» (ensemble de modifications) à l’un des principaux committers.
Donc, tout d’abord, vous avez besoin d’une adresse e-mail pour l’un des membres de l’équipe principale. Ensuite, ils ont dû regarder votre code et vous envoyer des commentaires par courrier électronique. Il peut y avoir des suggestions pour suivre leurs conventions de mise en page de code de manière plus cohérente ou pour ajouter autre chose à votre correctif. Vous feriez ces changements, les enregistrez et leur envoyez un fichier de correctif mis à jour. Ensuite, le validateur transmettrait probablement votre e-mail à quelques autres contributeurs de confiance, rassemblerait leurs commentaires, vous les enverrait, puis vous enverriez un fichier de correctif final avec les modifications approuvées pour qu’ils fusionnent.
C’est beaucoup de travail pour ce qui pourrait potentiellement être un petit changement!
Étant donné que de nombreux projets étaient gérés par des bénévoles, il ne valait généralement pas la peine d’examiner, de répondre et de fusionner bon nombre de ces contributions.
GitHub a transformé tout cela. Avec tout projet hébergé publiquement sur GitHub, tout ce que vous avez à faire est de visualiser le projet, de cliquer sur le bouton «fourche» pour obtenir votre propre copie du projet, d’apporter les modifications souhaitées, de les enregistrer, puis de cliquer sur un bouton pour soumettre un «Pull Request» (PR) pour demander à l’un des propriétaires du projet de «tirer» votre travail dans son code. La création d’une Pull Request crée également une page Web sur laquelle toute personne intéressée par le projet peut consulter votre code et fournir des commentaires.
Il est même possible que des «robots» participent à l’action comme le PR ci-dessous. Le projet JavaScript open source React a un « sizebot » qui confirme que les modifications proposées ne rendent pas la taille globale du projet déraisonnablement grande. Voici l’URL si vous souhaitez consulter vous-même le PR https://github.com/facebook/react/pull/16825 .
Pour vous donner une idée de l’ampleur de l’impact que GitHub avait sur les projets open source, il y a dix ans, même les projets les plus populaires n’avaient que 20 à 50 committers. Aujourd’hui, React en a 1337 et Rails 3876!
Au-delà de l’open source
Les Pull Requests sont un excellent moyen de permettre la contribution à faible friction d’un grand nombre de personnes potentiellement non fiables – le scénario par défaut pour les projets open source. Il est facile pour quiconque d’améliorer un projet, de soumettre un PR, et pour l’équipe principale d’examiner et de clôturer, de fournir des commentaires ou de «fusionner» le travail dans le projet, ce qui réduit le coût et la complexité de la collaboration pour les grands, équipes réparties à temps partiel.
Il s’avère que, en plus d’être un bon moyen pour les projets open source de solliciter des contributions, les PR sont également un moyen assez solide pour une équipe de développement à plein temps de collaborer sur une base de code. Chaque développeur (ou développeurs) crée une nouvelle branche dans le référentiel (un nouveau flux de travail au sein du projet). Ensuite, ils créent un PR où l’équipe peut examiner l’état d’avancement du code et peut attacher des artefacts tels que des maquettes et des données de test de performance afin que tout ce que vous devez savoir sur la nouvelle fonctionnalité se trouve sur la page PR.
Enfin, lorsque la fonctionnalité est terminée, revue et réussie tous les tests automatisés, tout membre de l’équipe disposant des autorisations suffisantes peut simplement «fusionner» le travail dans la branche «principale» (principale) et fermer le PR. L’équipe passe ensuite à la fonctionnalité / branche / PR suivante.
Pour cette raison, la plupart des entreprises utilisent maintenant GitHub ou un outil similaire (Atlassian Bitbucket ou Gitlab sont des alternatives courantes) pour stocker et collaborer sur leur code. Si vous travaillez en tant que développeur de logiciels professionnel, il est très probable que vous collaboriez avec votre équipe en utilisant GitHub ou un site similaire.
Que pouvez-vous en faire?
Il existe trois principaux cas d’utilisation de GitHub:
- Projets personnels – Avez-vous déjà eu envie d’écrire un script pour automatiser un ensemble de tâches ennuyeuses ou pour créer une application Web ou mobile – ou même quelque chose de cool pour un Arduino? GitHub est un endroit idéal pour stocker votre code. Vous pouvez le télécharger pour ne jamais le perdre lorsque votre ordinateur portable meurt, et si jamais vous souhaitez partager votre code publiquement, ou avec des collaborateurs sélectionnés, il est facile de le rendre public ou d’autoriser des utilisateurs spécifiques à accéder à votre référentiel.
- Projets de travail – Votre entreprise décidera de l’infrastructure que vous utilisez pour collaborer sur le code, mais il y a de fortes chances que ce soit GitHub ou un autre service offrant des fonctionnalités très similaires. Être familier avec la collaboration à l’aide de succursales et de PR vous facilitera grandement l’accès à un emploi de développeur de logiciels.
- Projets open source – Même si vous souhaitez simplement utiliser un projet open source, vous pouvez très bien vous rendre dans le dépôt sur GitHub pour en savoir plus sur la façon de l’utiliser ou pour voir si l’erreur que vous rencontrez est une » problème connu ». Et si jamais vous souhaitez commencer à contribuer à un projet (indice – la documentation et les tests sont assez faciles à créer et sont presque toujours appréciés – en particulier pour les petits projets), c’est là que vous irez pour bifurquer le projet et soumettre votre PR.
Comment commencez-vous?
Essayons deux choses: créer un projet et contribuer à un projet.
Créer un projet
Imaginons que nous voulions créer un projet pour un nouveau site Web. Passons en revue les premières étapes pour nous assurer que nous ne sommes pas dans un dépôt Git, créer un dépôt et enregistrer quelques fichiers.
Tout d’abord, ouvrez une fenêtre de terminal (sous Linux ou Mac, n’importe quel shell fera l’affaire – sous Windows, vous voudrez utiliser Git Bash – pas Powershell).
Assurons-nous que nous ne sommes pas déjà dans un dépôt Git (ce qui confondrait Git et nous!)
> git status
fatal: pas un référentiel git (ni aucun des répertoires parents): .git
Parfait – nous ne sommes pas dans un repo Git. Ensuite, créons-en un:
> git init my-cool-website
Référentiel Git vide initialisé dans /Users/peterbell/Dropbox/code/my-cool-website/.git/
Parfait. Vous pouvez voir que je garde mon code dans le répertoire Dropbox / code de mon répertoire d’utilisateurs, et qu’il a créé un nouveau sous-répertoire avec le nom que j’ai passé à la commande. Maintenant, allons dans ce répertoire:
> cd mon-site-cool-
mon -site -cool git: (maître)
Mon shell me dit que je suis dans un référentiel Git et que je suis sur la branche master (j’utilise zshell et le populaire framework oh my zsh sur un Mac). Ensuite, créons une page d’accueil pour le site Web. Nous pouvons utiliser la commande Unix «echo» pour écrire du texte dans un fichier:
> echo "Hello world" >> index.html
Et assurons-nous que cela fonctionne en utilisant la commande «cat» pour afficher le contenu du fichier:
> cat index.html
Bonjour tout le monde
Parfait. Maintenant, sauvegardons nos modifications:
> git add.
> git commit -m "Créer une page d'accueil"
[master (root-commit) 4854911] Créer une page d'accueil
1 fichier modifié, 1 insertion (+)
créer un mode 100644 index.html
Génial, nous avons créé le premier commit (root) dans le dépôt et enregistré la nouvelle page d’accueil. Il est maintenant temps de le partager avec le monde. Tout d’abord, nous devons aller sur GitHub, nous connecter et cliquer sur l’icône «+» juste à gauche de notre image en haut à droite de la page:
Lorsque vous cliquez dessus, vous verrez une liste déroulante. Sélectionnez «nouveau référentiel» et dans le formulaire qui apparaît, entrez le nom du référentiel. Faisons le même que le nom du répertoire / projet « my-cool-website » pour empêcher quiconque de se tromper. Ensuite, décidez si vous voulez le rendre public ou privé, et cliquez sur le bouton «Créer un référentiel» en bas du formulaire. Ne cochez pas la case «Initialiser ce dépôt avec un README» – c’est génial si vous commencez dans GitHub, mais si vous avez déjà un projet Git, cela vous rend la vie plus difficile.
Vous devriez alors être redirigé vers une page qui ressemble un peu à ceci:
Suivez les instructions pour pousser un dépôt existant à partir de la ligne de commande. Dans mon cas, les commandes sont:
> git remote add origin https: //github.com/PeterBell/my-cool-website.git
> git push -u origin master
Énumération des objets: 3, terminé.
Comptage d'objets: 100% (3/3), terminé.
Objets d'écriture: 100% (3/3), 226 octets | 226,00 Kio / s, terminé.
Total 3 (delta 0), réutilisé 0 (delta 0)
Vers https: //github.com/PeterBell/my-cool-website.git
* [new branch] master -> master
Branch 'master' set up to track remote branch «maître» de «origine».
Ensuite, actualisez la page dans le navigateur, et félicitations, vous avez maintenant votre premier référentiel en place et hébergé sur GitHub!
Et si vous souhaitez apporter une modification au projet (peut-être ajouter une page À propos de nous), il vous suffit de coder (apporter les modifications), de valider (les enregistrer dans Git), puis de les pousser (les envoyer vers GitHub).
> echo "A propos de nous page" >> about.html
> git add.
> git commit -m "Ajouter une page à propos de nous"
[master 330a8d1] Ajouter une page à propos de nous
1 fichier modifié, 1 insertion (+)
mode de création 100644 about.html
> git push
Énumération des objets: 4, terminé.
Comptage d'objets: 100% (4/4), terminé.
Compression delta utilisant jusqu'à 8 threads
Compression d'objets: 100% (2/2), terminé.
Objets d'écriture: 100% (3/3), 296 octets | 296,00 Kio / s, terminé.
Total 3 (delta 0), réutilisé 0 (delta 0)
Vers https://github.com/PeterBell/my-cool-website.git
4854911..330a8d1 master -> master
Et maintenant, si vous actualisez la page, vous verrez que les deux fichiers s’affichent et que le nombre de validations est désormais de deux!
Contribuer à un projet
Terminons en apportant une contribution très simple à un projet juste pour avoir une idée de son fonctionnement. Nous pouvons le faire à l’aide du projet de l’organisation Flatiron School ici . Passons en revue le processus d’ajout d’un fichier au dépôt.
Tout d’abord, nous devons créer un fork (faire notre propre copie) du dépôt. Pour ce faire, cliquez sur le bouton de la fourche en haut à droite. Lorsque vous faites cela, il va immédiatement bifurquer le dépôt ou faire apparaître une petite fenêtre vous demandant où vous voulez le faire si vous avez accès à divers comptes organisationnels. Si cela vous donne la possibilité, choisissez simplement votre compte personnel.
Une fois que vous avez forké le dépôt, vous allez voir une page très similaire, mais notez l’URL – elle est passée de github.com/flatiron-school/ <repository-name> à github.com/ <your-username> / <repository-name> – donc dans mon cas, c’est https://github.com/PeterBell/contribute-here
OK, maintenant nous avons notre propre copie du projet, nous pouvons y apporter des modifications. Clonons-le sur notre disque dur, apportons un changement, validons-le et poussons le changement à notre fourchette.
Commencez par vous assurer que vous n’êtes pas dans un dépôt Git. Si c’est le cas, remontez dans un répertoire et réessayez.
> git status
Sur branche master
Votre branche est à jour avec 'origin / master'.
rien à commettre, arbre de travail propre
Hmm, donc je suis toujours dans le repo my-cool-website, laissez-moi remonter un répertoire et réessayer:
> cd ..
> code git status
fatal: pas un dépôt git (ni aucun des répertoires parents): .git
Parfait. Maintenant, pour cloner mon fork (télécharger ma copie sur mon ordinateur local), je vais simplement cliquer sur le bouton vert «Cloner ou télécharger» à droite de l’écran:
Et puis je vais copier l’URL, puis dans un type de fenêtre de terminal, git clone
puis coller l’URL:
> git clone https://github.com/PeterBell/contribute-here.git
Clonage dans 'contribuez-ici' ...
remote: énumération des objets: 3, terminé.
remote: comptage d'objets: 100% (3/3), terminé.
remote: Total 3 (delta 0), réutilisé 0 (delta 0), pack-reused 0
Déballage des objets: 100% (3/3), terminé.
Maintenant, cd
(changeons de répertoire) dans le répertoire, ajoutons un nouveau fichier, validons-le et poussons nos modifications vers le haut. Je vais appeler mon fichier « test-file.txt ». Appelez le vôtre autre chose que ça, sinon il y aura un conflit plus tard.
> cd contribuez-ici
> test tactile -fichier.txt
> git add.
> git commit -m "Fichier de test ajouté"
[master a136009] Fichier de test ajouté
1 fichier modifié, 0 insertions (+), 0 suppressions (-)
create mode 100644 test-file.txt
> git push
Enumération des objets: 4, terminé.
Comptage d'objets: 100% (4/4), terminé.
Compression delta utilisant jusqu'à 8 threads
Compression d'objets: 100% (2/2), terminé.
Objets d'écriture: 100% (3/3), 279 octets | 279,00 Kio / s, terminé.
Total 3 (delta 0), réutilisé 0 (delta 0)
Vers https://github.com/PeterBell/contribute-here.git
69cc185..a136009 master -> master
Actualisez maintenant la page dans le navigateur et vous devriez voir le fichier supplémentaire que vous avez créé.
La dernière étape consiste maintenant à créer une pull request pour demander que votre fichier soit fusionné dans le projet d’origine. Cliquez sur le bouton « Nouvelle demande d’extraction »:
Laissez simplement «comparer les changements» – c’est vrai. Cela signifie que vous souhaitez fusionner les modifications de votre référentiel (branche principale) dans le dépôt d’origine (branche principale), ce qui est correct.
Cliquez sur le bouton vert «Créer une demande d’extraction». Vous obtenez maintenant un titre et une description dans lesquels vous pouvez expliquer le changement que vous avez effectué et pourquoi vous pensez que c’est un bon ajout au projet.
Lorsque vous êtes prêt, cliquez sur le bouton vert « Créer une demande d’extraction » et cela vous mènera à la page des relations publiques où tout le monde peut désormais entrer, examiner et commenter votre code, et le propriétaire du projet peut fusionner votre travail s’il J’aime ça!
Prochaines étapes
Il y a encore beaucoup à apprendre sur la collaboration avec Git et GitHub – alors cherchez quelques articles à venir plus tard dans l’année! Dans Git, vous voulez probablement en savoir plus sur le branchement (à la fois la stratégie et la mécanique) et comment annuler les choses lorsque vous mettez votre dépôt en désordre.
Pour GitHub, vous devriez certainement en apprendre un peu plus sur les problèmes, les versions et certaines des autres fonctionnalités intéressantes intégrées. Pour le moment, au moins, vous savez ce qu’est GitHub, pourquoi il est devenu si populaire et vous en avez un peu expérience pratique à la fois de la création et de la contribution à un repo.