Automatiser ses tâches, réaliser des scripts représente déjà un travail conséquent. Versionner son code à l’aide de GitHub permet de sauvegarder son code et de limiter les modifications hasardeuses.
Nous allons voir comment utiliser Git depuis une machine WSL.
L’installation de WSL2 est documentée dans le KB Microsoft suivant :
La distribution utilisée est “Ubuntu 20.04” pour cette démonstration.
Sommaire
Prérequis
Bien que nous allons installer et utiliser Git sur WSL, Il convient d’installer en avance de phase Git sur l’OS Windows hôte de WSL.
En effet, l’authentification de Git vers GitHub est géré par un module Git nommé “GCM” pour “Git Credential Manager”. Il est possible d’installer uniquement GCM soit sur Windows, soit sur WSL ou d’installer Git directement sur Windows.
Personnellement lors de l’utilisation de Git sur WSL, je trouve plus pratique (vu que j’utilise Windows en parallèle) d’installer Git aussi sur Windows. D’ou la démarche d’installation de Git sur Windows plutôt que GCM seulement.
Pour ce faire se rendre sur le site suivant et lancer le téléchargement de Git pour Windows :
Lancer l’exécutable et installer Git en laissant les options par défaut. Lors du déroulement des étapes d’installation de Git, nous pouvons constater que celui-ci va installer GCM.
Une fois l’installation terminée, nous pouvons constater que l’utilitaire GCM “git-credential-manager-core.exe” est présent dans le répertoire :
- C:\Program Files\Git\mingw64\libexec\git-core\
Dans les nouvelles version de “Git for Windows”, GCM est installé dans le répertoire :
- C:\Program Files\Git\mingw64\bin\
Depuis votre terminal Windows, exécuter la commande suivante :
SETX WSLENV %WSLENV%:GIT_EXEC_PATH/wp
Et redémarrer WSL.
wsl --shutdown
Si vous ne souhaitez pas installer Git sur Windows, et préférez installer uniquement GCM, celà doit être possible, mais je ne l’ai pas encore fait. Vous trouverez plus d’informations dans le lien ci-dessous :
Installation /mise à jour de Git
Dans les dernières versions de WSL, git est déjà installé. Ce qui nous fait gagner quelques secondes ^^
Si ce n’est pas le cas dans votre distribution, l’installation de Git est réalisée à l’aide de la commande. Cette même commande vous permet de mettre à jour votre Git.
sudo apt-get install git
Vous pouvez vérifier la version de Git installé sur votre machine à l’aide de la commande :
git --version
Que Git soit installé par défaut ou non, il est nécessaire d’indiquer à Git d’utiliser GCM comme module d’authentification (module qui a été installé en prérequis). Exécuter la commande suivante :
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager-core.exe"
#ou bien (selon version) :
git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"
Pour terminer “proprement” la configuration initiale de Git, renseigner votre nom et adresse email à l’aide des commandes ci-dessous (optionnel) :
git config --global user.name "Your Name"
git config --global user.email "youremail@domain.com"
credential.useHttpPath
Quelque fois, une petite erreur d’authentification arrive avec l’erreur suivante :
“fatal: Cannot determine the organization name for this ‘dev.azure.com’ remote URL. Ensure the `credential.useHttpPath` conf{org}@dev.azure.com’.”
git config --global credential.useHttpPath true
Création d'un repository sur GitHub
Se rendre sur votre GitHub (créer un compte si ce n’est pas déjà le cas).
Puis naviguer dans la section “Repository” et cliquer sur “New”.
Nous allons commencer par nommer le nouveau repo (ici “TeddyDemo”). Donner une petite description de celui-ci.
Ensuite, nous avons le choix entre “Public” ou “Private”. Dans un premier temps nous allons choisir “Private”. La notion de privé ou public indique si le contenu du repo est accessible à tout le monde ou non.
Dans notre cas, inutile de l’exposer à tout le monde. Cette option est modifiable par le suite.
Les autres options telles que “README.md” ou “.gitignore” ne nous intéressant pas pour ce premier exemple.
Notre nouveau repository est créé. Nous allons maintenant pouvoir cloner celui-ci sur notre machine WSL afin pouvoir l’utiliser.
Récupérer l’URL de ce nouveau repo (ici : “https://github.com/BenoitNgs/TeddyDemo.git”).
Cloner le nouveau repo
Vu que nous sommes sur une machine WSL, j’ai pour habitude de créer les répertoires contenant les sources des projets dans le répertoire “C:\GitHub\” de la machine Windows qui héberge WSL.
Depuis WSL, le disque “C:\” de l’hôte Windows est accessible depuis le point de montage “/mnt/c/”. Et oui, la magie de WSL 🙂
Depuis WSL lancer la commande :
mkdir /mnt/c/GitHub
Voilà le répertoire “GitHub” est créé, accessible simplement depuis Windows et depuis WSL. Il ne s’agit que d’un simple répertoire dans lequel nous allons cloner le repo précédemment créé et pouvoir commencer à enregistrer nos codes sources.
La création de ce répertoire n’est qu’un exemple, libre à vous d’organiser les repos locaux sur vos machines comme bons vous semble. L’utilisation de “C:\GitHub” dans cet exemple permet de manipuler simplement et rapidement les sources d’un environnement à l’autre avec un chemin d’accès court.
De plus, dès lors qu’un repo sera cloné localement sur votre machine, le répertoire correspondant au repo peut être déplacé comment bon vous semble sans contraintes particulières. Git est très intelligent.
Le plus important est de retenir que depuis:
- WSL –> Windows est accessible dans : /mnt/c/
- Windows –> WSL est accessible dans : \\wsl.localhost\NomDeLaDistro
Maintenant se rendre depuis une console PowerShell lancée sur Windows et non WSL dans le répertoire :
- C:\GitHub\
cd /mnt/c/GitHub
Cloner un repository distant est réalisé à l’aide de la commande “git clone UrlDuRepo”.
git clone https://github.com/BenoitNgs/TeddyDemo.git
La mire d’authentification GitHub apparait, séléctionner “Sign in woth your browser”.
Et voilà, nous sommes authentifié et le repo a été cloné en local.
Personnellement, je n’ai pas trouvé /réussis à me passer de Windows pour jouer l’authentification de type MFA. Il est possible d’utiliser un token généré depuis GitHub, mais je n’ai pas retenu cette solution.
Par contre, une fois l’authentification jouée et le token Oauth obtenu, toutes les commandes Git fonctionnent depuis WSL au travers de GCM.
Premier fichier
Pour créer notre premier fichier, nous allons créer un README.md. Souvenez-vous il s’agit d’un des fichiers que Git proposait de créer lors de la création du repo, chose que nous n’avons pas faite.
Pour se faire, utiliser la commande “touch” pour créer un fichier et “code” pour éditer celui-ci avec VSCode.
Si vous n’avez pas installé VSCode sur votre machine, vous pouvez télécharger celui-ci depuis :
cd /mnt/c/GitHub/TeddyDemo
touch README.md
code README.md
Maintenant qu’un premier fichier a été créé, nous allons pouvoir l’ajouter à la configuration Git.
Lors de l’utilisation de “git add”, soit un fichier spécifique doit être précisé ou “.” pour ajouter tous les nouveaux fichiers.
git add .
Puis “commiter” les changements opérés au niveau du repo. Ceci permet d’indiquer à Git que des modifications ont été effectuées au niveau du repo local et qu’il doit les prendre en compte (sauvegarde des fichiers au sens Git).
git commit -m "Add README.md file"
Et enfin envoyer les fichiers “commités” au repo distant (GitHub).
git push
Ce n’est qu’une fois que le “push” a été réalisé que les modifications sont accessible et prise en compte sur le repo GitHub.
Conclusion
Voilà Git est installé sur WSL et permet de manipuler vos repo rapidement. WSL et Windows restent intimement liés, Git est déjà à installé sur Windows et certaine manipulation doivent être réalisées depuis Widnows. Cependant, à force d’utiliser WSL, avoir Git directement accessible depuis celui-ci pour ajouter un nouveau fichier ou pousser un commit permet un gain de temps et un confort de travail non négligeable.
Ce tuto est loin d’expliquer le fonctionnement de Git et les bonne pratiques. Il n’a que vocation à installer Git sur WSL.