Update Gestion de versions avec hébergement du dépôt sur un serveur GitLab, les bases authored by Sebastien Jean's avatar Sebastien Jean
...@@ -913,8 +913,25 @@ Merge made by the 'recursive' strategy. ...@@ -913,8 +913,25 @@ Merge made by the 'recursive' strategy.
1 file changed, 1 insertion(+), 2 deletions(-) 1 file changed, 1 insertion(+), 2 deletions(-)
``` ```
⏪ L'exécution de la commande `git pull` s'effectue en 2 sous-commandes qui peuvent s'exécuter indépendamment :
1. `git fetch`
* le client git local envoie au serveur des informations sur l'état de sa branche `origin/main`
* le serveur renvoie au client ce qui lui manque pour mettre à jour cette branche
2. `git merge`
* le client git local essaie d'intégrer le contenu d'`origin/main` dans `main` et pour cela il determine la partie commune de l'historique
* **cas 1** : si la différence est une série de commits qui s'enchainent directement derrière le dernier commit de `main`, la fusion est automatique et consiste à raccrocher les commits manquants dans `main`
* _👀c'est le cas du retard simple vu précédemment_
* **cas 2** : si la différence est une série de commits qui s'enchainent à partir d'un point de l'historique situé **avant** le dernier commit de `main`, **mais** que les commits sur les 2 branches **ne rentrent pas en conflit**, la fusion est automatique, elle consiste à faire temporairement coexister 2 branches parallèles (A et B) qui se rejoignent sur un commit généré automatiquement (appelé commit de fusion) qui a comme prédécesseurs les derniers commits de A et B (qui résout la divergence)
* _👀c'est le cas de l'avance/retard sans conflit_
* **cas 3** : si la différence est qu'une série de commits qui s'enchainent à partir d'un point de l'historique situé **avant** le dernier commit de `main`, **mais** que les commits sur les 2 branches **rentrent en conflit**, la fusion n'est plus automatique et elle requiert une intervention du développeur (résolution de conflit)
* 👀 **_ce dernier cas n'est pas traité par ce guide_**
On vérifie l'état du dépôt et on en déduit que : On vérifie l'état du dépôt et on en déduit que :
* il s'est opéré une fusion automatique
* le dépôt local n'est pas synchronisé avec le dépôt distant
```bash ```bash
sebastienjean@MacBook-Air-749 gitlab-bases % git status sebastienjean@MacBook-Air-749 gitlab-bases % git status
On branch main On branch main
...@@ -938,3 +955,5 @@ sebastienjean@MacBook-Air-749 gitlab-bases % ...@@ -938,3 +955,5 @@ sebastienjean@MacBook-Air-749 gitlab-bases %
``` ```
> :eyes: l'option `--graph` de la commande `git log` permet de représenter l'**historique sous forme de graphe**, ce qui permet de voir les divergences et leur résolution. > :eyes: l'option `--graph` de la commande `git log` permet de représenter l'**historique sous forme de graphe**, ce qui permet de voir les divergences et leur résolution.
La situation résultante est illustrée ci-dessous :
\ No newline at end of file