Si vous faites un peu de développement, vous avez sûrement déjà entendu parler de GitHub et de GIT. Ces deux outils sont très souvent utilisés par les développeurs pour gérer des projets ou collaborer sur des projets à plusieurs. Cet article est un MEMO pour les personnes comme moi (qui ne sont pas développeurs de métier). Il est donc possible qu'il y ait des erreurs ou des abus de langage.

Différence entre GIT et GitHub

GIT est un système de contrôle de version. Il s'agit d'un logiciel en ligne de commande que vous pouvez installer sur votre PC. GIT permet d'avoir un historique des modifications apportées au code. Il permet aussi à plusieurs développeurs de travailler sur un même projet sans écraser le travail des autres développeurs. GIT dispose aussi d'un système de branches, qui permet de structurer votre travail et de réaliser des tests sans risquer de casser votre code en production (nous en reparlerons plus tard).

GitHub est une plateforme Web basée sur GIT, son rôle est de fournir un hébergement aux dépôts GIT. Github permet de stocker le code source et les versions d'un projet sur ses serveurs, tout en fournissant une interface utilisateur simple, permettant de naviguer dans les dépôts, d'avoir un historique des versions et de consulter le code source. Github est aussi une grande communauté de développeurs sur laquelle vous pouvez partager vos projets ou bien participer à des projets open-source. Github offre aussi des fonctionnalités pour le travail collaboratif telles qu'un système d'issues qui permet aux contributeurs de signaler des bugs ou de proposer des améliorations. Les autres développeurs peuvent faire des pull request sur un projet, cela consiste à proposer du code aux développeurs qui gèrent le projet, afin d'améliorer le fonctionnement ou d'ajouter une fonctionnalité à l'application.

Il ne faut pas confondre GIT et GitHub qui sont deux choses différentes, c'est pour cela que je fais cette petite explication. Pour résumer, GitHub est une plateforme qui utilise GIT pour gérer les versions, tout en offrant d'autres fonctionnalités pour aider les développeurs de projets.

Créer un projet avec GIT et GitHub

Je vais maintenant vous présenter un petit workflow très basique d'utilisation de GIT et GitHub pour un projet.

Création de projet local avec GIT

Pour créer un projet GIT il suffit de lancer la commande d'initialisation de GIT dans le répertoire de votre projet.

git init

Cette commande va créer un dossier .git qui contiendra les informations de votre projet en local. Lorsque vous faites de modifications, vous allez indiquer à git vos changements en les enregistrant avec les deux commandes suivantes.

git add <file>

La commande git add ajoute le contenu modifier à l'index local pour préparer la prochaine validation (commit). Vous pouvez préciser le chemin du fichier à ajouter ou utiliser l'option --all pour ajouter tous les fichiers modifiés depuis le dernier commit.

git commit

La commande git commit permet d'enregistrer nos modifications.

Avec ces commandes de base, vous pouvez en local historiser les modifications de votre code. Maintenant, il faut héberger ce projet sur GitHub.

Hébergement du projet sur GitHub

Tout d'abord, il faut créer un dépôt sur Github. C'est plutôt simple, il faut juste avoir un compte sur la plateforme et donner un nom à notre dépôt. On peut aussi choisir de rendre notre dépôt public ou privé. Il faut ensuite connecter notre dépôt local avec celui créer sur GitHub. Pour cela, GitHub vous fournit une commande qui est la suivante.

git remote add origin <URL>

Pour ensuite envoyer vos changements sur GitHub, il faut utiliser la commande suivante.

git push origin main

Cette commande consistes à envoyer sur GitHub vos modifications locales sur la branche main de Github qui est la branche par défaut sur GitHub.

Système de branche

Une notion très importante de GIT est la notion de branche. Une branche est une version parallèle de notre projet. Cette dernière permet de travailler sur une fonctionnalité, un correctif ou encore de faire des tests sans impacter le code principale de notre projet. La branche principal est souvent appelée main ou master. Sur GitHub la branche par défaut s'appelle main. On pourrait imaginer que la branche main de notre projet soit notre version du projet en production et on pourrait créer à côté une branche dev qui serrait notre version de développement. Voici les étapes à suivre pour réaliser cela.

Création d'une branche et placement sur cette branche

git checkout -b dev

Vérifier notre branche de travail

git branch

Nous travaillons désormais sur la branche dev. Toutes les modifications que vous ferez serront sur la branche dev en local. Pour les envoyer sur Github, voici les étapes à suivre. Ajout des modifications à l'index

git add --all

Enregistrement des modifications

git commit -m "Ajout fichier"

Nous allons à présent envoyer notre branche dev sur Github, car pour le moment notre branche dev n'est présente que localement sur notre PC. Nous utiliserons l'option --set-upstream pour créer la branche sur Github.

git push --set-upstream origin dev

Cette commande permet juste de créer la branche dev. Pour envoyer les modifications, il faudra effectuer la commande suivante.

git push origin dev

Ajout des modifications de la branche dev sur la branche principale

Une fois que l'on a fait nos modifications sur la branche dev, puis que l'on les a testé. On peut les ajouter à la branche main. On parle alors de merge (fusion de branche).

Changement de branche de travail

git checkout main

Fusion de la branche dev dans la branche main

git merge dev

Envoie des modifications de la branche main sur Github

git push origin main

Nous avons désormais apporté nos modifications à notre branche de production sur Github.

Synchronisation locale

Nous avons surtout parlé précédemment d'envoyer nos modifications faites en local vers GitHub. Quand l'on travaille à plusieurs sur un projet Github, il arrive souvent que les autres développeurs apportent des modifications aux différentes branches. Il devient alors nécessaire de récupérer les modifications des autres développeurs. Pour ce faire, il existe la commande git pull. Positionner vous sur la branche à synchroniser (par exemple main)

git checkout main

Synchroniser la branche main sur Gitbub avec votre branche local.

git pull origin main

Il est possible ensuite d'effectuer une fusion (merge) de votre branche dev avec la branche main. Afin de repartir du code en production pour développer vos nouvelles fonctionnalités.