# Versionner son code avec Git [Git](https://git-scm.com/) est un logiciel de [gestion de version](https://fr.wikipedia.org/wiki/Gestion_de_versions). ## Interfaces et serveurs Git permet de stocker et sauvegarder des documents ainsi que leurs versions précédentes sur un serveur prévu à cet effet. Les plus connus sont : - [Github](https://github.com/) - [Gitlab](https://about.gitlab.com/) - [Bitbucket](https://bitbucket.org/) - [Gitea](https://gitea.io/) Certains de ces services proposent des fonctionnalités avancés de suivi des bugs, d’automatisation des tâches, etc. ::: info Les trois premiers proposent un compte gratuit largement suffisant pour un usage classique. Le dernier est à installer sois-même sur un serveur. ::: ## Utilisation locale ### Outils Afin de créer et gérer un dépôt de documents (généralement un dossier contenant le code source de notre projet), il est nécessaire d’utiliser un terminal. Il est possible d’utiliser le terminal intégré à son logiciel de développement ou celui de son système d’exploitation : - **terminal** sur MacOS et linux - **powershell** sur Windows ### Authentification du serveur Pour éviter d’avoir à renseigner le mot de passe de son compte github, gitlab, gitea à chaque fois, il est recommandé d’utiliser une clé SSH. Ce protocole permet une authentification en arrière plan de votre machine auprès du serveur. Afin de générer une clé, renseignez et validez la commande suivant dans le terminal : ```bash ssh-keygen -t ed25519 -C "VOTRE_EMAIL" ``` Ne renseignez pas de mot/phrase de passe. Vous devriez recevoir une réponse du terminal contenant la localisation de la clé sur votre ordinateur ainsi qu’une “empreinte” de clé. ::: details Exemple d’empreinte ```bash The key fingerprint is: SHA256://wlS3vSWCovCYh+Y5LbtlS1Ee4nr0e3mTOmFq7//us test@mail.fr The key’s randomart image is: +--[ED25519 256]--+ | . | | . . | | + | | o o | | .S.. + . | | . .o. =. o| | . .. ...o=*=| | +o= o+==%o| | .*oo .BO@E*| +----[SHA256]-----+ ``` ::: Vous devez ensuite récupérer la clé publique, généralement `id_ed25519.pub`, copier son contenu et le coller dans les paramètres de votre compte github, gitlab, etc. ### Création d’un dépôt Les étapes de création d’un dépôt sont quasiment systématiquement les mêmes : 1. ouvrir le dossier de travail dans le terminal 2. taper la commande `git init` 3. se rendre sur son serveur git en ligne 4. créer un nouveau dépôt vide depuis l’interface ### Envoyer des fichiers vers le serveur Maintenant que le dépôt est créé, il faut faire le lien entre votre projet local et dépôt sur le serveur. À l’intérieur du dépôt distant vide, vous devriez trouver des commandes fournies par le serveur. Ces commandes peuvent-être copiées/collées dans l’ordre dans le terminal. 1. ajouter le serveur comme dépôt distant - `git remote add origin git@github.com:USER/REPO.git` 2. demander à git de suivre tous les fichiers du dossier - `git add .` 3. ajouter et figer l’état des fichiers suivis avec un commentaire - `git commit -m "COMMENTAIRE"` 4. envoyer les fichiers sur le serveur - `git push origin main` ::: tip À chaque fois que vous souhaitez envoyer des modifications, répétez les étapes 2 à 4 :::