flowchart
github[(Remote)]
dev1[(Local Kim)]
dev2[(Local yours)]
github <--> dev1
github <--> dev2
Git
Le but est de vous présenter très rapidement Git et son utilisation. Pour plus d’informations, consultez les liens en bas de cette page.
1 Git ?
Git est un logiciel qui permet de :
- versionner son code
- synchroniser des dépôts de code
Lorsque vous travailler à cinq sur un projet, ce n’est pas évident pour tous d’avoir à chaque instant la même version du code.
En travaillant avec Git, vous allez avoir :
- un dépôt de code commun central distant (remote) hébergé ici sur https://github.com/
- chacun votre dépôt local sur lequel vous travaillez
L’idée est synchroniser réguliérement ces dépôts pour que chaque membre de l’équipe travaille avec la version la plus récente.
C’est simplement un ensemble de dossiers et fichiers, comme un Drive.
Pour faciliter la synchronisation, un dépôt doit être :
- léger (quelques Mo maximum)
- contenir principalement des fichiers lisibles par un éditeur de texte (.txt, .sql, .py, .R, etc.)
Nous allons ensuite détailler le fonctionnement de Git dans le cadre d’un exercice.
2 Exercice
2.1 Compte GitHub et jeton
Vous allez commencer par créer créer votre compte GitHub et ensuite générer un jeton qui vous permettra de communiquer entre vos dépôts sans authentification supplémentaire.
-
- Note: for ENSAI datalabs
- Expiration:
30/06/<year n+1> - cochez repo and workflow
Attention sa valeur ne sera affichée qu’une seule fois. En cas de perte, il faut le supprimer et en recréer un nouveau.
Vous allez maintenant déclarer ce jeton sur le datalab :
Vous allez maintenant pouvoir utiliser ce jeton dans vos services pour communiquer avec GitHub.
Sans ce jeton, vous seriez obligé de vous authentifier (login + pwassord) à chaque échange entre vos dépôts.
2.2 Créer un dépôt distant
Le plus facile est de commencer par créer le dépôt distant sur GitHub et ensuite de le cloner.
-
- Repository name : ENSAI-Git-TP
- Add README : On
- Add .gitignore : Python
Votre dépôt distant est créé. Il contient uniquement les fichiers README et .gitignore.
Le dépôt distant n’a pas vocation à être modifié directement.
Son rôle est de :
- avoir une sauvegarde de votre code
- avoir un dépôt central si vous travaillez à plusieurs
Les modifications seront réalisées sur les dépôts locaux et partagées sur le dépôt distant.
2.3 Cloner son dépôt local
Commençons par récupérer l’url du dépôt distant :
Nous allons maintenant créer un clone local dans un service du datalab.
Sur le datalab :
Vous arrivez sur la page des paramètres avant de lancer le service.
Vous avez maintenant un service VScode avec un clone local de votre dépôt.
Suite au lancement de votre service, la commande suivante a été exécutée :
`git clone https://$GIT_PERSONAL_ACCESS_TOKEN@github.com/
avec :
$GIT_PERSONAL_ACCESS_TOKEN: une variable d’environnement contenant la valeur de votre jeton<username>: votre nom d’utilisateur GitHub
Cette commande crée localement un clone de votre dépôt distant.
2.4 Add, commit, push
Avant de commencer à modifier votre dépôt local, vérifiez qu’il est bien branché sur le dépôt distant.
Dans Visual Studio Code :
Vous devez voir apparaitre l’url de votre dépôt distant incluant votre jeton.
Nous allons maintenant créer de nouveaux fichiers et les envoyer vers le dépôt distant.
Dans l’explorer (à gauche) de Visual Studio Code :
-
- Clic droit > New file
- Insérer le code
print("Hello")dans ce fichier et sauvegardez-le
Partageons maintenant ce fichier avec le dépôt distant.
Cet envoi se déroule en plusieurs étapes obligatoires :
- Déclarez le fichier à Git
- Ajoutez-le dans un commit (point de sauvegarde)
- Envoyez ce commit au dépôt distant
Voici la suite de commandes à connaitre et exécuter :
Rafraichissez votre dépôt distant sur GitHub et vérifiez que le fichier est bien apparu.
2.5 Pull
Nous venons d’envoyer du code vers le dépôt distant.
Maintenant imaginez que :
- vous travaillez en équipe
- un camarade a envoyé une modification sur le dépôt distant
- vous souhaitez mettre à jour votre dépôt local pour récupérer la modification
Pour simuler ce processus, nous allons directement mettre à jour le dépôt distant.
-
- ⚠️ ce n’est pas une bonne pratique mais ici c’est pour l’exercice
Cela vous permet de récupérer sur votre dépôt local la modification faite sur le dépôt distant.
3 Autres points importants
Ce qui a été fait ici n’est que le minimum du minimim à savoir pour utiliser Git.
De nombreux essentiels ont été volontairement mis de côté pour ne pas complexifier ce sujet.
N’hésitez pas à consulter le cours et le TP dispensé aux élèves de 1A (lien ci-dessous).
3.1 Conflit
Par exemple, que se passe-t-il si :
- Kim a modifié le fichier ex1.py sur son dépôt local et a poussé sa modification vers le dépôt distant
- Sur votre dépôt local, vous avez également modifié le même fichier
- Vous essayez de faire
git push: vous avez un message disant que vous devez commencer par pull - Vous faites donc
git pullet là vous avez un conflit i.e. Git ne peut pas décider quelle est la bonne version entre la votre et celle de Kim
3.2 Fichier .gitignore
Ce fichier permet de lister des fichiers qui ne doivent pas être versionnés par Git. C’est utilise par exemple pour ne pas envoyer sur le dépôt distant des fichiers contenant des mots de passe ou encore des fichier de données volumineux.