|
@@ -66,15 +66,18 @@ fichier `.git/config`).
|
|
|
|
|
|
## Synchroniser un dépôt local existant vers un dépôt distant
|
|
|
|
|
|
-Si vous avez déjà créé et modifié un dépôt local,
|
|
|
+Si vous avez déjà créé et modifié un dépôt local...
|
|
|
|
|
|
![](depot_distant_07a.png)
|
|
|
|
|
|
![](depot_distant_07a.svg)
|
|
|
|
|
|
-alors vous pouvez le synchroniser
|
|
|
-avec un dépôt distant en utilisant les commandes `git remote add origin ...`
|
|
|
-puis `git push -u origin master`.
|
|
|
+... alors vous pouvez le synchroniser avec un dépôt distant. Pour cela, il
|
|
|
+faut lancer la commande `git remote add origin ...` (pour ajouter, dans le
|
|
|
+dépôt local, un dépôt distant qu'on appellera `origin`) puis la commande `git
|
|
|
+push -u origin master` (pour pousser, dans le dépôt distant `origin`, la
|
|
|
+branche `master` du dépôt local). Ces deux commandes synchronisent le dépôt
|
|
|
+distant et le dépôt local ; il n'est plus nécessaire de les relancer ensuite.
|
|
|
|
|
|
![](depot_distant_07b.png)
|
|
|
|
|
@@ -83,7 +86,8 @@ puis `git push -u origin master`.
|
|
|
## Récupérer (tirer) les commits d'un dépôt distant
|
|
|
|
|
|
La commande `git pull` permet de récupérer les éventuelles modifications sur le
|
|
|
-serveur et de les intégrer dans votre dépôt local.
|
|
|
+serveur (par exemple envoyées par un collaborateur ou par vous-même depuis une
|
|
|
+autre machine) et de les intégrer dans votre dépôt local.
|
|
|
|
|
|
![](depot_distant_08.png)
|
|
|
|
|
@@ -116,27 +120,34 @@ graphique.
|
|
|
|
|
|
Imaginons que vous avez modifié et commité un fichier, et que vous voulez
|
|
|
l'envoyer sur le serveur. Pour cela, il faut d'abord faire un `git pull` avant
|
|
|
-le `git push` au cas où l'un de vos collaborateurs aurait envoyer une
|
|
|
-modification sur le serveur entre temps.
|
|
|
+le `git push` au cas où l'un de vos collaborateurs aurait envoyé une
|
|
|
+modification sur le serveur entre-temps.
|
|
|
|
|
|
-Si des modifications ont été faites en parallèle...
|
|
|
+En effet, si quelqu'un a commité et pushé des modifications en parallèle, alors
|
|
|
+le `master` du serveur pointe sur un commit différent du `master` local.
|
|
|
|
|
|
![](depot_distant_12a.svg)
|
|
|
|
|
|
-... git est souvent capable de les fusionner mais parfois il n'arrive pas à
|
|
|
-résoudre le conflit et il vous demande de le faire manuellement.
|
|
|
+Il faut donc fusionner ces modifications, c'est-à-dire créer un nouveau commit
|
|
|
+rassemblant les modifications de `master` et de `origin/master` puis
|
|
|
+envoyer ce nouveau commit sur le serveur. Git est souvent capable de faire ces
|
|
|
+fusions automatiquement mais parfois il n'arrive pas à résoudre le conflit et
|
|
|
+il vous demande de le faire manuellement.
|
|
|
|
|
|
+Dans le cas d'une fusion avec conflit, voici ce que ça peut donner :
|
|
|
![](depot_distant_12.png)
|
|
|
|
|
|
+On est donc dans un état non commité et contenant un conflit à résoudre.
|
|
|
+
|
|
|
![](depot_distant_12b.svg)
|
|
|
|
|
|
-Pour résoudre un conflit, il suffit d'ouvrir le fichier en cause et de
|
|
|
-remplacez les zones marquées par le contenu que vous voulez obtenir.
|
|
|
+Pour résoudre le conflit, il suffit d'ouvrir le fichier en cause et de
|
|
|
+remplacer les zones marquées par le contenu que vous voulez obtenir.
|
|
|
Il existe des outils graphiques comme `meld` qui peuvent vous y aider.
|
|
|
|
|
|
![](depot_distant_13.png)
|
|
|
|
|
|
-Une fois les conflits édités, vous pouvez commiter...
|
|
|
+Une fois le fichier corrigé, vous pouvez commiter...
|
|
|
|
|
|
![](depot_distant_14a.png)
|
|
|
|
|
@@ -159,24 +170,30 @@ Résumé des commandes git précédentes :
|
|
|
|
|
|
Quelques conseils de méthode de travail :
|
|
|
|
|
|
-- utilisez la page
|
|
|
+- Utilisez la page
|
|
|
[https://gogs.univ-littoral.fr](https://gogs.univ-littoral.fr) pour créer et
|
|
|
-gérer vos dépôts distants
|
|
|
-- récupérez vos dépôts distants avec `git clone`
|
|
|
-- récupérez les modifications du serveur régulièrement (avec `git pull`)
|
|
|
-- faites un `git pull` avant d'envoyer vos nouveaux commits sur le serveur (avec `git push`)
|
|
|
-
|
|
|
-## Exercice
|
|
|
-
|
|
|
-- créez un dépôt sur le serveur gogs et récupérez-le dans un dépôt local
|
|
|
-- ajoutez/committez/pushez quelques fichiers et vérifiez sur le site gogs que
|
|
|
- les modifications sont bien sur le serveur
|
|
|
-- clonez votre dépôt distant dans un second dépôt local ; committez/pushez
|
|
|
- depuis ce second dépôt puis synchronisez le premier dépôt local et vérifiez
|
|
|
-que vous y récupérez bien les modifications réalisées dans le second
|
|
|
-- modifiez une même ligne d'un même fichier en parallèle sur les deux dépôts
|
|
|
- locaux ; vérifiez que vous avez bien un conflit, résolvez-le et synchronisez
|
|
|
-tout le monde
|
|
|
+gérer vos dépôts distants.
|
|
|
+- Récupérez vos dépôts distants avec `git clone`.
|
|
|
+- Récupérez les modifications du serveur régulièrement (avec `git pull`).
|
|
|
+- Faites un `git pull` avant d'envoyer vos nouveaux commits sur le serveur (avec `git push`).
|
|
|
+
|
|
|
+## Exercice 1
|
|
|
+
|
|
|
+- Créez un dépôt sur le serveur gogs et récupérez-le dans un dépôt local.
|
|
|
+- Ajoutez/commitez/pushez quelques fichiers et vérifiez sur le site gogs que
|
|
|
+ les modifications sont bien sur le serveur.
|
|
|
+
|
|
|
+## Exercice 2
|
|
|
+
|
|
|
+- Associez-vous à un ou deux collègues.
|
|
|
+- Créez un dépôt sur le serveur gogs et ajoutez vos collègues comme collaborateurs.
|
|
|
+- Récupérez votre dépôt et ajoutez/commitez/pushez quelques fichiers.
|
|
|
+- Demandez à vos collègues de récupérer votre projet.
|
|
|
+- Demandez à un collègue de commiter/pusher une modification et vérifiez que
|
|
|
+ vous arrivez à la récupérer de votre côté.
|
|
|
+- Faites maintenant des modifications en parallèle sur un même fichier.
|
|
|
+- Vérifiez que vous avez bien un conflit, résolvez-le et synchronisez tout le
|
|
|
+ monde.
|
|
|
|
|
|
* * * * *
|
|
|
|