# Git : Les bases

## Qu’est-ce que Git ?

- On utilise Git pour garder l’historique de tous les changements dans un projet.
- Vous pouvez revenir à une version précédente quand vous en avez besoin.
- Aide à travailler seul ou à plusieurs sur le même projet sans perdre de fichiers.
- Aide à organiser et sauvegarder votre travail de façon sûre.

## Démarrer avec Git
### Installer Git

- Aller sur [https://git-scm.com](https://git-scm.com) pour télécharger Git.
- Installer Git comme un programme standard.
- Vérifier l’installation avec la commande :
    - `git --version`
- Si un numéro s’affiche, Git est bien installé.

### Configurer Git

- Configurer votre identité (nom et email) pour Git
- Cette étape se fait une seule fois sur votre ordinateur
```sh
git config --global user.name "Votre Nom"
git config --global user.email "votre.email@exemple.com"
```

### Créer un dépôt Git

- Choisir ou créer un dossier pour votre projet
- Aller dans ce dossier avec le terminal
- Initialiser Git dans ce dossier
- Git crée un dossier caché `.git` pour gérer l’historique et les fichiers

```admonish success title="À retenir"
~~~sh
git init
~~~
```


## Commandes essentielles Git

### 1. Voir l’état du projet avec `git status`

- Affiche les fichiers modifiés, nouveaux ou prêts pour le commit (= dans la zone de préparation)
```admonish success title="À retenir"
~~~sh
git status
~~~
```
```admonish example title="Exemple"
~~~sh
$ git status
Sur la branche main
Modifications non suivies :
  (utilisez "git add <fichier>..." pour inclure ces fichiers au prochain commit)
	modifié : mon_script.py
~~~
```

### 2. Ajouter des fichiers avec `git add`

- Placer un fichier dans la zone de préparation (staging area), prêt à être enregistré (commité)
```admonish success title="À retenir"
~~~sh
git add nom_du_fichier
~~~
```

### 3. Enregistrer avec `git commit`

- Créer un enregistrement (commit) du projet avec un message clair
```admonish success title="À retenir"
~~~sh
git commit -m "Message décrivant les changements"
~~~
```

### 4. Voir l’historique avec `git log`

- Affiche la liste des commits les plus récents en premier
```admonish success title="À retenir"
~~~sh
git log
~~~
```
```admonish example title="Exemple"
~~~sh
$ git log
commit abc123def456
Auteur: Marie Dupont <marie.dupont@email.com>
Date:   Fri Oct 3 14:00:00 2025 +0200

    Correction du calcul des scores
~~~
```

### 5. Comparer avec `git diff`

- Affiche les différences entre les fichiers modifiés et la dernière version enregistrée
- Sans option : compare fichiers modifiés non ajoutés au staging
- Avec `--staged` : compare fichiers en staging avec dernière validation
```admonish success title="À retenir"
~~~sh
git diff
git diff --staged
~~~
```
```admonish example title="Exemple"
~~~sh
$ git diff
--- a/mon_script.py
+++ b/mon_script.py
@@ -1,4 +1,5 @@
-print("Bonjour")
+print("Bonjour, monde !")
~~~
```

### 6. Étiqueter un commit avec `git tag`

- Créer une étiquette sur un commit pour repérer une version
```admonish success title="À retenir"
~~~sh
git tag nom_du_tag
# Ou 
git tag nom_du_tag hash_du_commit
~~~
```

## Routine simple pour enregistrer vos changements

1. Modifier ou créer des fichiers dans le projet
2. Vérifier l’état avec `git status`
3. Ajouter les fichiers avec `git add nom_fichier`
4. Valider les changements avec `git commit -m "Message clair"`
5. Répéter régulièrement pour garder un historique propre

