Les langages de programmation

Mini-cours sur Git / GitHub

Table des matières

Avant de lire ce cours, je choisis mes couleurs

Le développement d'un programme d'envergue requiert le travail en équipe. Le projet peut être divisé (ou pas). S'il est divisé, chaque partie du projet peut être confié un développeur ou à une équipe. Si plusieurs développeurs interviennent sur le même projet ou sur une même partie du projet, la gestion des versions devient un travail essentiel.

Git est un logiciel qui nous permet de créer un dépôt local et de gérer les versions de nos fichiers. Il est libre et a été, créé par Linus Torvalds.

La maîtrise de Git est très souvent demandée lors d'un recrutement. Et, on vous demandera souvent votre lien GitHub. Il permet de mettre en avant la qualité de son code, et ainsi montrer ses capacités lorsqu''on recherche un emploi.

Git (sur Wikipedia)

Le code est alors placé sur un serveur d'entreprise (auto-hébergement), tel que GitLab) ou sur un site d'hébergement, tel que GitHub.

Conserver son code sur un serveur est une sage précaution car son PC peut tomber en panne, être volé ou détruit dans un incendie.

GitHub est un service en ligne qui va héberger notre dépôt distant.

GitHub est un serveur, propriété de Microsoft depuis 2018. Des milliers de développeurs ont alors choisi des plateformes concurrentes.

Wikipedia

Pour collaborer sur un projet open source, il faut suivre les étapes suivantes :

  1. Lire la documentation. S'y trouvent des informations sur la manière de collaborer au mieux au projet.
  2. Rapatrier le dépôt distant sur votre dépôt local et réaliser les modifications.
  3. Envoyer vos modifications en ajoutant des messages de description (Pull request). Il faut que la personne gérant le dépôt distant comprenne les modifications que vous avez faites.

Le contrôleur de versions

Un contrôleur de versions est un programme qui permet aux développeurs de conserver un historique des modifications et des versions de tous les fichiers. Il permet de revenir à une version antérieure. Il est donc utile même pour un développeur isolé.

Il permet de travailler à plusieurs sans risquer de supprimer les modifications des autres.

Créer un compte GitHub

Vous pourrez créer un nombre illimité de dépôts publics et privés. La version gratuite vous autorise jusqu'à 3 collaborateurs dans un projet privé (et, illimité dans un projet public).

Le site est anglophone. Allez sur https://github.com/, puis cliquez sur Sign up. Il ne sera demandé qu'un nom d'utilisateur, une adresse e-mail et un mot de passe. Vous recevrez un courriel pour confirmer la validité de votre adresse e-mail.

Après votre inscription, il vous suffira de cliquer sur Sign in.

N'hésitez pas à lire le Read the guide avant de créer un dépôt.

Créer un dépôt (un repository).

Installer et configurer Git

Télécharger sur https://git-scm.com/downloads la version correspondante à votre système d'exploitation. (+/- 47 Mo)

Sous Windows 10, l'installation par défaut se fait dans le dossier C:\Users\XXX\AppData\Local\Programs\Git en occupe +/- 700 Mo.

Next, Next, ... cocher Launch Git Bash, Finish.

La console de commandes en ligne s'affiche.

Le caractère $ est appelé le prompt et indique que la console attend vos instructions. Pour sortir de la console, il suffit de taper, classiquement, exit.

Pour lier votre dépôt local et votre dépôt distant, tapez les commandes suivantes :

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

... en remplaçant par votre nom d'utilisateur et votre adresse e-mail donné lors de la création de votre compte sur GitHub.

Puis, tapez :

git config --list

pour vérifier la configuration actuelle

Puis, tapez :

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto
git config --global core.editor notepad++
git config --global merge.tool vimdiff

... si ces paramètres ne correspond pas déjà à ceux indiqués lors du listing.

NotePad++ est préférable à Vim, comme éditeur

Les programmes Git sont installés dans C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Git

Créer son dépôt local

Maintenant que les paramètres généraux sont configurés, il faut créer son dépôt local.

Un dépôt représente une copie du projet. Chaque ordinateur d'un développeur possède donc une copie du dépôt. Dans chaque dépôt, on trouve les fichiers ainsi que leur historique.

Pour créer son dépôt, il faut créer un dossier sur son disque dur. Ce dossier contiendra tous les dossiers (projets).

Créer un sous-dossier (un projet). Puis, lancer Git dans ce dossier-projet. Pour ce faire, sous windows, le plus simple est d'afficher le dossier (vide) dans l'explorateur de fichiers, puis d'y faire un clic droit (dans une partie vide de la fenêtre listant les fichiers de ce dossier) pour faire apparaître le menu contextuel. Ce menu affiche, depuis l'installation de Git, l'entrée Git Bash Here.

Tapez dans la console, ainsi ouverte :

git init

Un dossier caché .git a été créé. Il s'agit d'un dépôt local.

Pointer et cloner un dépôt

Comme à la pétanque, pointer puis tirer.

Pour accéder à un dépôt distant et le cloner en local, il faut aller sur la page web d'un dépôt distant.

Sur la page, cliquez sur le bouton "Code" (en vert).

Et, récupérer l'URL du dépôt. Cette URL se termine par .git.

Dans la console, pour pointer vers le dépôt distant (depuis votre dépôt local), tapez :

git remote add XX https://github.com/yyy/zzz.git

où XX est le nom court du dépôt que vous attribuez à ce dépôt.

Il ne reste plus qu'à cloner le dépôt ainsi pointé.

git clone https://github.com/yyy/zzz.git

S'affiche dans la console une série de lignes. Et, un nouveau dossier s'affiche dans votre dossier (projet)

Les branches

La branche principale (le tronc) s'appelle souvent master.

Pour lister les branches d'un projet, tapez :

git branch

Le caractère * précédant le nom de la branche indique la branche en cours d'utilisation.

Pour créer une branche appelée xxxx, tapez :

git branch xxxx

Pour se connecter sur la branche yyyy, tapez :

git checkout yyyy

Commit

Une fois le code modifié, vous pouvez lancer un commit, c'est-à-dire l'enregistrer (avec un message). Par exemple :

git commit -m "Première modification"

Créer une branche

Pour créer la branche principale, il suffit créer un fichier dans le dossier de travail puis de l'envoyer dans le stage puis de faire un commit. Exemple :

git add monPremierFichier.txt
git commit

S'affiche l'éditeur de messages (notePad++) :

Après avoir tapé un message, sauvegardé et fermé NotePad++, le message s'affiche dans la console.

Un git branch affiche une astérisque devant la branche "master" (=> la branche principale a été créé.)

Supprimer une branche

Réparer une branche

Avant un commit

=> vérifier la situation, mettre dans la remise, créer une branche, mettre le contenu de la remise dans la branche.

git status
git stash
git status
git branch brancheCommit
git checkout brancheCommit
git stash apply

S'il y a eu plusieurs mises en remise, il faudra choisir la bonne.

Pour afficher la liste des remises :

git stash list
git stash apply stash@{0} 

Après un commit

Déplacer le commit

Nous allons déplacer le commit sur la bonne branche.

La fonction git log liste, par ordre chronologique inversé, tous les commits réalisés sur une branche. Elle permet donc de récupérer l'identifiant d'un commit, appelé le hash. Exemple :

$ git log
commit ca83a6dff817ec66f443420071545390a954664949
Author: Thibaut <thibaut@xxx.com>
Date: Mon Mar 19 21:52:11 2019 -0700
git reset --hard HEAD^
git checkout bonneBranche
git reset --hard ca83a6df

Seuls les 8 premiers caractères du hash sont pris en compte.

Modifier le message

L'option --amend permet de modifier le dernier commit.

L'option -m permet de modifier le message

git commit --amend -m "Votre nouveau message de commit"

Ajouter un fichier

git add FichierOublie.txt
git commit --amend --no-edit

L'option --amend permet de NE PAS modifier le message.

Sur le dépôt distant

Pour supprimer le dernier commit sur un dépôt distant :

git revert HEAD^

clés SSH

Créer une clé privée et une clé publique

Pour se connecter à son compte github sans introduire à chaque fois son adresse e-mail et son mot de passe : voir documentation

Créer les clés SSH

Ou, pour créer les clés SSH, hors du dossier de travail, appeler Git et tapez :

ssh-keygen -t rsa -b 4096 -C "maChaine"

Exemple :

ssh-keygen -t rsa -b 4096 -C "Dans ce dossier, vous avez donc deux fichiers"
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/xxx/.ssh/id_rsa): id_rsa2
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa2
Your public key has been saved in id_rsa2.pub
The key fingerprint is:
SHA256:85Tu4Pg5p9xbFsOPbVs7IDwlDN7npBXXxzLtzFDOvOU Dans ce dossier, vous avez donc deux fichiers
The key's randomart image is:
+---[RSA 4096]----+
|               +o|
|         .   .+==|
|        . +   oB*|
|         . * = .*|
|        S + %  .E|
|         = = O   |
|        . o * = .|
|       +.=.o . +.|
|      ..*++.  ...|
+----[SHA256]-----+

C'est la clé privée qu'il faut placer sur GitHub.