cours/docs/dev/02-intermediaire/git.md

105 lines
4.0 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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, dautomatisation 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
### Installtion
#### MacOs
Git est inclus dans MacOs, mais vous devez installer les <span lang="en">command line tools</span> avant de pouvoir l'utiliser.
:::warning Attention
Si c'est la première fois que vous tentez d'utiliser le terminal ou certaines commandes, MacOS vous demandera d'installer les <span lang="en">command line tools</span>. C'est une suite d'outils indispensable pour utiliser certaines fonctionnalités en ligne de commande (dans un terminal).
Vous pouvez déclencher cette installation via la commande `xcode-select --install`
:::
#### Windows
Git doit être installé via un exécutable windows [téléchargeable ici.](https://git-scm.com/download/win)
### 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 dutiliser un terminal. Il est possible dutiliser le terminal intégré à son logiciel de développement ou celui de son système dexploitation&nbsp;:
- **terminal** sur MacOS et linux
- **powershell** sur Windows
### Authentification du serveur
Pour éviter davoir à renseigner le mot de passe de son compte github, gitlab, gitea à chaque fois, il est recommandé dutiliser 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&nbsp;:
```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 quune “empreinte” de clé.
::: details Exemple dempreinte
```bash
The key fingerprint is:
SHA256://wlS3vSWCovCYh+Y5LbtlS1Ee4nr0e3mTOmFq7//us test@mail.fr
The keys 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 dun dépôt
Les étapes de création dun dépôt sont quasiment systématiquement les mêmes&nbsp;:
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 linterface
### 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. À linté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 lordre 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
:::