Git
Cet article est incomplet.
Il est jugé trop incomplet dans son développement ou dans l'expression des concepts et des idées. Son contenu est donc à considérer avec précaution.
Pour l'instant se référer à Git et Github
Introduction
Git est un système de contrôle de versions gratuit et open-source. Système de contrôle de versions est un terme complexe pour une chose simple : Git permet d'effectuer le suivi d'un projet, en enregistrant les modifications apportées aux fichiers qui font partie du projet (historique des versions). Il donne ainsi la possibilité de faire un suivi et accéder facilement à une version antérieure d'un fichier, sans avoir besoin de les nommer et archiver manuellement.
Git est devenu le système de contrôle de version le plus populaire de nos jours. Alors qu'il a initialement été utilisé principalement pour le développement informatique, il existe une tendance de plus en plus forte à l'adopter dans d'autres domaines, par exemple dans des projets de recherche à la fois comme support pour l'évolution d'un projet dans le temps et comme moyen de collaboration (ce qui implique l'intégration avec des plateformes online comme GitHub ou GitLab). Il est également très utile pour gérer plusieurs versions d'images ou de vidéos lors de projets de conception graphique.
Comment Git peut vous faciliter la vie
Si vous avez déjà eu l'occasion de travailler sur un projet, peu importe le domaine, vous vous êtes sûrement retrouvé à devoir nommer les différentes versions de vos documents, par exemple "docProjet_v1.docx". Celui-ci s'est rapidement transformé en "docProjet_v12.docx", pour autant que vous n'ayez pas oublié de faire une sauvegarde au lieu de travailler sur le document initial, perdu pour toujours... Il suffit que vous deviez collaborer avec deux partenaires sur un projet, et vous vous retrouvez avec un dossier comprenant des dizaines de documents, avec des numéros de versions différentes ET les acronymes des membres du groupe "docProjet_v13_mimi_modifié_v2"... tout ceci envoyé par email et stocké quelque part dans votre logiciel de messagerie!
Ce système de gestion manuelle est loin d'être optimal et c'est là qu'intervient Git. Avec quelques lignes de codes, vous avez le contrôle sur ce qui est créé, sauvegardé et récupéré, selon vos besoins. Les avantages principaux de Git sont :
- le suivi des changements dans un dossier projet (repository)
- la possibilité rapide de revenir à une version précédente pour un fichier ou tout le projet
- la facilitation de collaboration (centralisation et suivi des versions par utilisateur)
- la possibilité de créer des embranchements pour travailler sur des tâches différentes selon la progression d'un projet
- la réduction d'erreurs humaines dans l'archivage de fichiers
- et last but not least, en cas de perte ou de destruction de fichiers, ils sont récupérables simplement
Installer Git
Pour travailler avec Git, vous allez utiliser quelques lignes de commandes simples depuis un terminal. Si vous n'êtes pas familier avec cet outil, vous pouvez vous référer à la page sur les lignes de commande.
En premier lieu, téléchargez Git depuis la page git-scm.com en choisissant la version correspondant à votre machine. Comme il est possible que Git ait été installé avec d'autres logiciels, typiquement en installant Github Desktop, vous pouvez ouvrir un terminal et taper la ligne de commande suivante pour déterminer si Git est déjà installé et sous quelle version :
git --version
Même si Git est déjà installé, il est probablement utile de mettre à jour avec la version la plus récente.
Il existe plusieurs façons d'installer Git en fonction de votre système d'exploitation, nous présentons les plus simples.
Windows
Sous Windows, l'installation est relativement simple. Rendez-vous sur Git for Windows (Git BASH) et téléchargez la dernière version disponible puis lancez-la et suivez les instructions. Pour l'installation, vous pouvez laisser toutes les configurations par défaut. Si vous voulez néanmoins que Git soit disponible également dans la ligne de commande de Windows (prompt ou powershell), cochez cette option :
MacOS
Il existe un installeur pour Mac : git-osx-installer :
- Téléchargez une archive
.dmg
qui vous donnera accès à plusieurs fichiers. - Ouvrez l'archive
.pkg
qui se trouve à l'intérieur; cela aura pour effet d'exécuter le programme d'installation. - Suivez les étapes en laissant les valeurs par défaut.
Vous pouvez également simplement utiliser XCode :
- Ouvrez un terminal et tapez
git --version
- Si Git est installé, cela renvoie sa version. Sinon, le terminal vous propose de l'installer.
Toutes les méthodes d'installations sont disponibles sur la page git-scm.com
Configurer Git
Maintenant que Git est installé, il est intéressant de personnaliser au moins deux éléments : votre nom d'utilisateur et votre adresse email. Ces informations sont définies une fois au début et permettent de faire un suivi. Si vous utilisez déjà Github, assurez-vous que vous utilisez bien les mêmes nom et email.
- Ouvrez une invite de commande (windows) ou un terminal (mac)
- Si vous ne l'avez pas fait à l'étape précédente, vérifiez que Git est installé en tapant
git --version
- Pour configurer votre nom d'utilisateur, tapez
git config --global user.name votre nom d'utilisateur
- Pour configurer votre adresse email, tapez
git config --global user.email votre email
Pour les curieux, vous pouvez visualiser votre configuration globale en tapant :
git config --list
Débuter avec Git
Pour commencer à travailler avec Git, il y a deux solutions :
- soit créer un dépôt vide si vous commencez un nouveau projet
- soit cloner un dépôt existant et l'importer dans Git. Dans ce cas, vous récupérez tout l'historique (versions) des changements d'un projet pour travailler dessus.
Un dépôt, dans un logiciel de gestion de versions comme Git, est une copie du projet. On dit que chaque personne qui travaille sur le projet a une copie du dépôt.
Créer un nouveau dépôt
Pour créer un nouveau dépôt en local, il faut tout d'abord créer un dossier du nom du projet sur votre disque local. Vous pouvez simplement créer un dossier par le gestionnaire de dossier habituel, soit directement avec des lignes de commandes :
cd /home/user1
mkdir projet1
cd projet1
Ce qui veut dire
1re ligne
cd
= ouvrir un répertoire/home
= répertoire "home" à la racine du disque (premier "/" = racine du disque) contenant le(s) profil(s) utilisateur(s)./user1
= répertoire personnel de l'utilisateur 1
2e ligne:
mkdir projet1
= commande permettant de créer (make directory [mkdir]) le répertoire "projet1" dans le profil utilisateur précédemment ouvert
3e ligne:
cd projet1
= ouvre le répertoire "projet1" dans le profil user1 du répertoire "home".
Une fois le dossier créé, la dernière chose à faire est d'initialiser un nouveau dépôt avec la commande git init
. Cela signifie que vous venez de créer un nouveau projet Git dans le dossier où vous vous trouvez (un dossier cache .git vient tout simplement d'être créé).
Cloner un dépôt existant
Cela signifie qu'on récupère tout l'historique et tous les codes source d'un projet avec Git.
Comment trouver un dépôt Git ? vous pouvez vous rendre sur github.com qui contient une multitude de dépôts Git et prenons, par exemple, Jquery, vous y trouvez notamment tous les fichiers du projet.
Vous trouvez aussi l'adresse du dépôt (https), ce qui va vous permettre de cloner.
Dans la ligne de commande, vérifiez que vous êtes bien à l'endroit où vous voulez cloner le projet (rappel, pour revenir à la racine du disque faire cd /
= racine) et taper en ligne de commande:
git clone https://github.com/jquery/jquery.git
.
Cela va créer un dossier "jquery" et y télécharger tous les fichiers source du projet ainsi que l'historique des modifications. Git compresse automatiquement les données pour le transfert et le stockage, il peut arriver que le clonage d'un dépôt prenne beaucoup de temps.
NB: des messages apparaîtront dans la console. Le dernier de ces messages débutant par checking out
; cela signifie que le clonage est terminé.
NB2: pour cloner un dépôt, il y a plusieurs méthodes.
- Une première méthode ci-dessus
- Une deuxième méthode consiste tout simplement à télécharger le projet via "DOWNLOAD ZIP"
- Une troisième méthode nécessite l'utilisation de Git Desktop. Pour cela, "forkez" le projet puis aller dans Git Desktop pour le cloner (cela nécessite donc de connaître Git Desktop).
Fonctionnement général de Git
Git a pour particularité de segmenter clairement les différents niveaux auxquels vous travaillez. En effet, on distingue trois niveaux d'organisation:
Environnement de travail (Working Directory)
C'est l'endroit où vous ajoutez/modifiez/supprimez votre code et vos fichiers.Zone de transit (Staging Area)
C'est l'endroit où sont listées les modifications apportées dans votre environnement de travail.Dépôt final (Repository)
C'est l'endroit où Git stocke définitivement les changements apportés, ainsi que les différentes versions de votre projet. Il combine donc d'une part les codes et fichiers effectivement créés et liste les modifications apportées au répertoire, de sorte qu'on puisse aisément revenir sur les modifications apportées.
Marche à suivre classique
Une fois le dossier projet créé et lié à un dépôt Git, vous pourrez, à chaque fois que vous en aurez envie, faire une sauvegarde d'une version du projet. Pour ce faire, voici une marche à suivre standard.
- Ouvrez le terminal et aller dans le dossier du projet
- Tapez
git status
: cette commande vous donnera l'état du projet, c'est-à-dire les différences entre votre environnement de travail (le dossier projet) et le dépôt Git.
Si aucune modification n'a été apportée, le terminal affiche : nothing to commit, working tree clean
- Si des modifications ont été apportées, vous verrez apparaitre deux zones : les fichiers déjà existants dans le dépôt Git qui ont été modifiés depuis le dernier commit et les nouveaux fichiers (qui n'existaient pas dans la version précédente).
- A ce stade, vous allez identifier quels fichiers vous désirez sauvegarder dans le dépôt Git, avec la commande
git add
. Cette commande stocke temporairement les fichiers sélectionnés dans la zone de transit (staging area). Si vous souhaitez sauvegarder toutes les modifications apportées sur les différents fichiers du projet, il suffit de tapergit add .
qui "stage" la totalité des fichiers. - Une fois les fichiers sélectionnés dans la zone de transit, il vous suffit de taper
git commit
pour créer un snapshot de votre projet (version sauvegardée) dans le dépôt Git. Afin de pouvoir facilement retrouver les versions précédentes, il est fortement conseillé d'ajouter un titre au commit en utilisant la commandegit commit -m"titre de la version"
. - Pour vérifier que tout s'est bien déroulé, vous pouvez faire un
git status
et contrôler l'état des fichiers.
Exemple concret pour un projet de page web
Vous voulez créer une page web accompagnée d'une feuille de style.
Sauvegarde des versions
- Commencez par initialiser un dossier projet
git init
, qui sera vide et par défaut sur la branche master . - A l'aide de l'éditeur de votre choix, créez votre fichier index.html et sauvegardez-le dans le dossier projet, précédemment créé
- Le fichier est nouveau, nous devrions donc voir une modification dans le dossier. En tapant
git status
, on voit que :
- il n'y a pas encore eu de commit
- il existe un fichier untracked, soit notre nouveau fichier index.html
- Pour sauvegarder cette version du fichier, il faut ajouter des fichiers à la zone de transit avec
git add .
. Le point après add permet de sélectionner tous les fichiers untracked.
En vérifiant le statut, on voit que le fichier index.html est considéré comme nouveau et est prêt à être sauvegardé (commit).
- Faites un
git commit
pour sauvegarder cette version du fichier dans l'historique des versions.
- Le transfert est confirmé et en tapant
git status
dans le terminal, le message "working tree clean, nothing to commit" confirme que les sauvegardes sont à jour. - Bonne pratique : en ajoutant la fonction
-m"votre texte"
après le commit, il est plus facile de retrouver la version que l'on recherche lorsque l'on veut récupérer un fichier.
- Créez une feuille de style dans le dossier projet, puis modifiez votre fichier index.html
- En tapant
git status
, on voit que les deux fichiers ont des statuts différents, car index.html existe déjà et a été modifié (modified) et le fichier css est nouveau (untracked).
- A ce stade, il est possible de choisir si l'on veut faire un commit de la totalité des fichiers (avec
git add .
) ou certains fichiers seulement. - pour voir l'historique des versions, tapez
git log
. La commande log affiche une grande quantité d'information pas nécessairement utile. L'option --oneline permet de se concentrer juste sur le titre (inscrit après -m en effectuant le commit).
- Les versions apparaissent de la plus récente à la plus ancienne
- Chaque version a un code unique, mais on voit l'intérêt d'un message explicite à chaque commit
- Le texte HEAD -> master" indique que la version actuelle est la dernière version
Récupération de versions précédentes
Chaque fois que vous apportez des modifications suffisamment significatives, vous allez faire un git commit qui vous permettra au besoin de récupérer un état spécifique de votre projet.
Vous avez modifié votre fichier .css mais vous n'aimez pas le résultat et désirez revenir à la version précédente.
- Tapez
git checkout version du commit style.css
La version du commit est disponible en faisant un git log
Le fichier .css dans votre dossier projet est revenu à la version précédente.
Si vous ne souhaitez pas réutiliser à cette version, vous pouvez revenir à la dernière version en faisant git reset HEAD index.html
, puis git checkout --index.html
. Cette opération remet la tête de lecture (head) sur la dernière position et checkout la dernière version sauvegardée du fichier index.html.
Récapitulatif des commandes standards
git status |
donne un aperçu de l'état du dépôt par rapport aux modifications apportées |
git add |
ajoute les fichiers sélectionnés à la zone de transit |
git commit |
transfère les fichiers modifiés de la zone de transit au dépôt final |
git log |
liste les versions des fichiers. Ajouter --oneline pour un résumé des titres, sans les détails des sauvegardes
|
git checkout |
Restaure une version précédente du projet |
Ressources
- Site officiel
- Pro Git Book Livre complet sur Git en ligne et gratuit (en anglais)
- Dangit, Git?! : Site qui illustre des problématiques communes qu'on peut rencontrer avec Git, ainsi que les solutions pour résoudre ces problématiques