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.
Pour collaborer sur un projet open source, il faut suivre les étapes suivantes :
- Lire la documentation. S'y trouvent des informations sur la manière de collaborer au mieux au projet.
- Rapatrier le dépôt distant sur votre dépôt local et réaliser les modifications.
- 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
-
Supprimer une branche vide
git branch brancheTest git branch git branch -d brancheTest git branch
-
Pour supprimer une branche qui n'est pas vide : (avec un D majuscule)
git branch -D brancheTest
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.