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
...@@ -259,3 +259,88 @@ Date: Sun Jan 23 10:13:01 2022 +0000 ...@@ -259,3 +259,88 @@ Date: Sun Jan 23 10:13:01 2022 +0000
On observe que les pointeurs `HEAD` et `main` sont en avance d'un commit par rapport à `origin/main`, ce qui veut signifie que le dépôt local est en avance d'un commit par rapport au dépôt distant. On observe que les pointeurs `HEAD` et `main` sont en avance d'un commit par rapport à `origin/main`, ce qui veut signifie que le dépôt local est en avance d'un commit par rapport au dépôt distant.
Ceci est confirmé par la commande `git status` : Ceci est confirmé par la commande `git status` :
```bash
MacBook-Air-749:gitlab-basics sebastienjean$ git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
```
<p align="center">
<img src="uploads/62d131b8cb94717b85b1e8c09e884a98/GitCloneThenCommit.png" width="50%" />
</p>
[//]: ![GitCloneThenCommit](uploads/62d131b8cb94717b85b1e8c09e884a98/GitCloneThenCommit.png)
> :bulb L'opération `commit` est **toujours locale**, comme illustré ci-dessus. L'observation de l'état du dépôt distant via l'URL ne montre pas de nouveau commit.
> **ce commit doit être explicitement transmis au serveur**
#### Synchronisation amont du dépôt local
L'envoi des commits manquants s'effectue via la commande `git push`.
Lors de cette opération :
- le client git local compare l'état de la branche locale `main` et de la branche de *remote-tracking* `origin/main`
<p align="center">
<img src="uploads/6ab0a5bbf04da3c3809dd78ed536970d/GitPush1.png" width="50%" />
</p>
[//]: ![GitPush1](uploads/6ab0a5bbf04da3c3809dd78ed536970d/GitPush1.png)
- il détermine ce qui doit être transmis au serveur distant (ici, le dernier commit)
- il dialogue avec le serveur pour échanger le ou les commits manquants
- il lui indique ici que le commit `deebe146` soit être raccroché à la suite du commit `fd7357b0`
- le serveur distant accepte ce changement, met à jour son historique local et en informe le client local
<p align="center">
<img src="uploads/34032840fdc58814826132ae4820af9e/GitPush2.png" width="50%" />
</p>
[//]: ![GitPush2](uploads/34032840fdc58814826132ae4820af9e/GitPush2.png)
- le client git local prend note de l'acceptation des changements et met à jour la branche de *remote-tracking*
<p align="center">
<img src="uploads/547607e77e2671a12d2dc19f00ab384f/GitPush3.png" width="50%" />
</p>
[//]: ![GitPush3](uploads/547607e77e2671a12d2dc19f00ab384f/GitPush3.png)
> :bulb Le serveur n'accepte les changements que s'ils consistent à raccrocher des commits manquants derrière un commit présent sur le serveur (*fast-forward*). Lorsque plusieurs contributeurs travaillent sur des clones locaux d'un même dépôt distant, l'envoi de commits par un contributeur peut échouer car de nouveaux commits ont pu être déposés par un autre contributeur avant la comparaison locale des historiques (*non fast-forward*). Cette situation est courante, donne lieu à une resynhcronisation aval (`pull`) et éventuellement une résolution locale de conflits de modifications.
Ici, cette opération se déroule normalement et conduit à ce que les dépôts locaux et distants soient de nouveau à jour :
```bash
MacBook-Air-749:gitlab-basics sebastienjean$ git push
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 305 bytes | 305.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
To https://gitlab.iut-valence.fr/jeans/gitlab-basics.git
fd7357b..deebe14 main -> main
MacBook-Air-749:gitlab-basics sebastienjean$ git status
On branch main
Your branch is up to date with 'origin/main'.
nothing to commit, working tree clean
MacBook-Air-749:gitlab-basics sebastienjean$ git log
commit deebe1462a849bdf6702b5d8064fcee2b479d9d6 (HEAD -> main, origin/main, origin/HEAD)
Author: sebastienjean <baz.jean@gmail.com>
Date: Sun Jan 23 21:31:04 2022 +0100
ajout d'un fichier
commit fd7357b0eda5a17ed4b66b995751219f303a85cd
Author: Sebastien Jean <sebastien.jean@univ-grenoble-alpes.fr>
Date: Sun Jan 23 10:13:01 2022 +0000
Initial commit
```
<p align="center">
<img src="uploads/57dcbb31e0cbd6609a0b8af9c85fe030/GitPush4.png" width="50%" />
</p>
[//]: ![GitPush4](uploads/57dcbb31e0cbd6609a0b8af9c85fe030/GitPush4.png)
\ No newline at end of file