# Git

Devenez responsable et adoptez les bons réflexes de versionning !

# [Git] Cheat-sheet

## Introduction

Git permet de faire du **versioning** notamment pour conserver et pouvoir restaurer son code dans le temps.

[![git-banner.jpg](https://wiki.neopipe.fr/uploads/images/gallery/2023-07/scaled-1680-/git-banner.jpg)](https://wiki.neopipe.fr/uploads/images/gallery/2023-07/git-banner.jpg)

## Configuration d'un dépôt

#### Initialisation d'un dépôt

```bash
git init
```

#### Configurer les identifiants

- Nom d'utilisateur :

```bash
git config --global user.name "<Username>"
```

- Email :

```bash
git config --global user.email "<MAIL@EMAIL.COM>"
```

#### Configurer un dépôt distant

```bash
git remote add origin <REPOS_URL>
```

## Gestion d'un dépôt

#### Ajouter les fichiers modifiés

```bash
git add .
```

#### Faire un commit

```bash
git commit -m "<COMMIT_MESSAGE>"
```

#### Faire un push

```bash
git push origin <BRANCH>
```

<p class="callout info">La branche principale se nomme **main**.</p>

#### Récupérer les fichiers d'un dépôt distant sans fusion

```bash
git fetch
```

#### Récupérer les fichiers du dépôt distant

```bash
git pull origin <BRANCH>
```

<p class="callout info">La commande **git pull** est une combinaison de **git fetch et git merge**.</p>

## Gestion des branches

#### Créer une branche

```bash
git branch <BRANCH_NAME>
```

#### Basculer sur une branche

```bash
git checkout <BRANCH_NAME>
```

#### Lister les branches

```bash
git branch
```

#### Fusionner une branche avec la branche actuelle

```bash
git merge <BRANCH_NAME>
```

## Gestion des commits

#### Afficher l'historique des commits

```bash
git log
```

#### Restaurer à l'état d'un commit

```bash
git reset <--hard|--soft> <COMMIT_ID>
```

<p class="callout info">L'argument **--soft** permet de restaurer seulement en local et vous devrez push pour appliquer les modifications contrairement à l'argument **--hard**.</p>

## Autres commandes

#### Cloner un dépôt

```bash
git clone <REPOS_URL>
```