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,24 +913,26 @@ Merge made by the 'recursive' strategy.
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 :
:rewind: 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
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_
* _:eyes: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_
* _:eyes: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_**
* :eyes: **_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 :
* il s'est opéré une fusion automatique
* le dépôt local n'est pas synchronisé avec le dépôt distant
* le dépôt local n'est pas synchronisé avec le dépôt distant
```bash
sebastienjean@MacBook-Air-749 gitlab-bases % git status
......@@ -956,4 +958,50 @@ 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.
La situation résultante est illustrée ci-dessous :
![14-no-conflict-BeforePush](uploads/44e94da6217f7a424161e6b0bc74aeb1/14-no-conflict-BeforePush.png)
> 👀 Le commit `5` est le commit de fusion. La branche `origin/main` est uniquement un cache de l'état de la branche sur le dépôt distant, elle n'inclut pas encore les commits `4` et `5`
#### Synchronisation montante à partir du dépôt `clone 2`
On effectue la synchronisation montante à partir du dépôt `clone 2` via la commande `git push` :
```bash
sebastienjean@MacBook-Air-749 gitlab-bases % git push
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 635 bytes | 635.00 KiB/s, done.
Total 5 (delta 1), reused 0 (delta 0), pack-reused 0
To https://gitlab.iut-valence.fr/jeans/gitlab-bases.git
b6c752a..1275819 main -> main
```
Ici, l'opération réussit car elle consiste à faire remonter une divergence résolue (commits `4` et `5`, avec `5` ayant comme prédécesseurs `3` et `4`)
On le vérifie en l'observant l'état du dépôt :
```bash
sebastienjean@MacBook-Air-749 gitlab-bases % git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
```
```bash
sebastienjean@MacBook-Air-749 gitlab-bases % git log --pretty="format:%h %s %an %D" --graph
* 1275819 Merge branch 'main' of https://gitlab.iut-valence.fr/jeans/gitlab-bases dev2 HEAD -> main, origin/main, origin/HEAD
|\
| * b6c752a Nouvelle modification du fichier unFichier.txt dev1
* | d9d3e8b Ajout du fichier unAutreFichier.txt dev2
|/
* 899b42b Ajout d'une ligne à unFichier.txt dev1
* 425ba5e ajout d'un fichier Sebastien Jean
* 23b7e54 Initial commit Sebastien Jean
```
La situation résultante est illustrée ci-dessous :
\ No newline at end of file