> For the complete documentation index, see [llms.txt](https://wiki-tech.fikara.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki-tech.fikara.io/tutoriels/git/git.md).

# Git

Configuration de Git et gestion de dépôt

## Introduction à Git <a href="#bkmrk-introduction-git" id="bkmrk-introduction-git"></a>

Git est un système de gestion de versions décentralisé, développé par Linus Torvalds en 2005. Il permet de suivre les modifications de code et de collaborer efficacement sur des projets. Bien que Git soit souvent utilisé avec GitHub, une plateforme populaire pour héberger des dépôts Git, il peut également être utilisé avec d'autres services comme GitLab ou Bitbucket. Dans cette introduction, nous allons montrer comment utiliser Git avec GitHub, tout en notant qu'il est compatible avec d'autres plateformes similaires.

**Installation de Git sur un système Linux Debian**

```bash
sudo apt install git
```

**Générer une clé SSH**

```bash
ssh-keygen -t rsa -b 4096 -C "votre.email@example.com"
cat ~/.ssh/id_rsa.pub
```

Ajoutez la clé publique à votre compte GitHub.

{% hint style="warning" %}
Connectez-vous à GitHub, allez dans **Settings > SSH and GPG keys** et ajoutez une nouvelle clé SSH.
{% endhint %}

**Tester la connexion SSH**

```bash
ssh -T git@github.com
```

**Configurer le nom et l'email de l'utilisateur**

```bash
git config --global user.name "Votre Nom"
git config --global user.email "votre.email@example.com"
```

**Initialiser le dépôt Git**

Avant de pouvoir ajouter des fichiers à votre dépôt et les pousser vers GitHub, vous devez initialiser un nouveau dépôt Git dans votre répertoire de projet.

```bash
git init
```

Cette commande crée un nouveau sous-répertoire nommé `.git`, contenant tous les fichiers nécessaires au suivi des versions de votre projet.

**Ajouter un dépôt distant**

```bash
git remote add origin git@github.com:username/repository.git
```

**Supprimer un fichier**

```bash
git rm fichier.txt
git commit -m "Suppression fichier.txt"
git push origin main
```

**Vérifier la configuration**

```bash
git config --list
```

Pour supprimer un fichier uniquement du suivi Git&#x20;

```bash
git rm --cached fichier.txt
```

**Vérifier la configuration**

```bash
git config --list
```

### Configurer l'URL du dépôt distant <a href="#bkmrk-configurer-url-du-d-c3-a9p-c3-b4t" id="bkmrk-configurer-url-du-d-c3-a9p-c3-b4t"></a>

Pour associer votre dépôt local à un dépôt distant :

```bash
git remote add origin git@github.com:votre-username/votre-repo.git
```

Pour changer l'URL du dépôt distant&#x20;

```bash
git remote set-url origin git@github.com:votre-username/votre-nouveau-repo.git
```

### Ajouter des fichiers au dépôt <a href="#bkmrk-ajouter-des-fichiers" id="bkmrk-ajouter-des-fichiers"></a>

Ajoutez tous les fichiers au suivi Git&#x20;

```bash
git add .
```

### Valider et pousser les changements <a href="#bkmrk-valider-et-pousser-les-changements" id="bkmrk-valider-et-pousser-les-changements"></a>

Après avoir ajouté ou supprimé des fichiers, validez les changements&#x20;

```bash
git commit -m "Message de commit"
```

Puis poussez les changements vers le dépôt distant&#x20;

```bash
git push -u origin main
```

**Cloner un dépôt**

Pour cloner un dépôt distant sur votre machine locale, utilisez la commande suivante :

```bash
git clone git@github.com:utilisateur/nom-du-repo.git
```

**Récupérer les mises à jour**

```bash
git pull origin main
```

**Récupérer les mises à jour sans fusionner**

```bash
git fetch origin
```

**Tester votre connexion SSH**

```bash
ssh -T git@github.com
```

#### Supprimer un fichier <a href="#bkmrk-supprimer-fichier" id="bkmrk-supprimer-fichier"></a>

```bash
git rm nom-du-fichier
```

**Vérifier le dépôt distant \`origin\`**

Pour voir sur quel dépôt distant vous êtes connecté, utilisez la commande suivante :

```bash
git remote -v
```

Cela affichera tous les dépôts distants associés à votre projet.

Pour afficher uniquement l'URL du dépôt \`origin\`, utilisez :

```bash
git config --get remote.origin.url
```

#### Utiliser Git Rebase <a href="#bkmrk-git-rebase" id="bkmrk-git-rebase"></a>

La commande `git rebase` est utilisée pour appliquer les commits d'une branche sur une autre branche. Cela permet d'obtenir un historique de commits plus linéaire et lisible.

**Rebase basique**

Pour rebaser votre branche actuelle sur la branche principale, utilisez :

```bash
git rebase master
```

**Rebase interactif**

Pour modifier plusieurs commits, utilisez le rebase interactif :

```bash
git rebase -i HEAD~n
```

Où `n` est le nombre de commits que vous souhaitez modifier.

**Squasher des commits**

Pour fusionner plusieurs commits en un seul, vous pouvez utiliser le rebase interactif et choisir l'option `squash`.

**Gérer les conflits**

En cas de conflit lors du rebase, résolvez les conflits manuellement, puis continuez le rebase :

```bash
git rebase --continue
```

### Utilisation de `git checkout`  <a href="#bkmrk-utilisation-de-git-checkout-et-git-rebase" id="bkmrk-utilisation-de-git-checkout-et-git-rebase"></a>

**1. Basculer sur votre branche de travail**

Avant de commencer le rebase, assurez-vous d'être sur la branche que vous souhaitez mettre à jour.

```bash
git checkout ma-branche
```

**2. Rebaser sur `origin/main`**

Mettez à jour votre branche avec les derniers changements de la branche principale.

```bash
git rebase origin/main
```

**3. Résoudre les conflits (si nécessaire)**

En cas de conflits, vous pouvez les résoudre comme suit :

```bash
git status
# Corrigez les fichiers en conflit
git add <fichiers corrigés>
git rebase --continue
```

Cela permet d'intégrer les changements de `origin/main` tout en maintenant un historique linéaire.

La commande `git status` est utilisée pour afficher l'état actuel de votre dépôt Git. Elle vous informe sur les fichiers qui ont été modifiés, ajoutés, ou supprimés depuis le dernier commit, ainsi que sur les fichiers en attente d'être ajoutés à l'index.

```bash
git status
```
