Ouverture d'un projet existant
À cette étape :
- Vous ouvrez un projet existant déjà cloné sur votre ordinateur, qui contient déjà des fichiers
- Le dépôt local est synchronisé avec le dépôt distant
- Tous les fichiers sont dans un état propre (committed)
- Aucun fichier n'a été modifié depuis le dernier commit
Arborescence du projet
État de Git
Fichiers modifiés
Aucun
Zone de transit (Staging)
Vide
Dépôt local
Dernier commit : structure initiale du site
Synchronisé avec origin/main
Faire git pull
Ce qui se passe :
Vous exécutez git pull avant de commencer à travailler !
- Vous récupérez les dernières modifications du dépôt distant
- Votre dépôt local est maintenant synchronisé avec le dépôt distant
- Vous êtes au courant des modifications récentes de vos collègues
- Cela évite les conflits lors du push futur
État des dépôts après git pull
Dépôt local (votre ordinateur)
Dernier commit : v1.1 (mis à jour)
Dépôt distant (serveur)
Dernier commit : v1.1
Votre situation
✅ Parfait : Votre dépôt local est synchronisé !
Leçon : Commencer chaque session par git pull est une bonne pratique !
Modifier des fichiers (après avoir récupéré les changements distants)
À cette étape :
Vous modifiez le fichier index.html, en sachant que votre collègue a déjà apporté des modifications (que vous avez récupérées).
État actuel du fichier
Après git pull, le fichier index.html contient :
Contenu actuel :
<h1>Welcome to our awesome website</h1>
Votre modification :
<h1>Bienvenue sur notre site web incroyable</h1>
État de Git
Fichiers modifiés (M)
Zone de transit (Staging)
Vide
Dépôt local
Dernier commit local : v1.1 (synchronisé)
Ajouter les modifications à la zone de transit (git add)
À cette étape :
- Vous avez modifié un fichier et êtes prêt à le préparer pour le commit
- Vous dites à Git : "Ce fichier modifié est prêt à être sauvegardé"
- Le fichier passe de Modified (M) à Added (A)
- Seuls les fichiers dans la zone de transit feront partie du prochain commit
Commande à exécuter
git add .
État de Git
Fichiers modifiés (M)
Aucun
Zone de transit (Staging)
Seuls les fichiers ajoutés à la zone de transit feront partie du prochain commit.
Créer un commit avec les modifications
À cette étape:
- Vous avez ajouté vos modifications à la zone de transit
- Vous exécutez la commande
git commit -m "message"pour créer un commit - Le commit enregistre un instantané des fichiers dans la zone de transit
- Le message décrit les changements effectués dans ce commit
- Vos modifications sont maintenant sauvegardées localement dans l'historique des commits
- Le tout est prêt pour un PUSH (ou presque...)
Commande à exécuter
git commit -m "Modification de la page d'accueil"
Aperçu des changements
--- a/index.html
+++ b/index.html
@@ -1,6 +1,6 @@
-<h1>Welcome to my website</h1>
+<h1>Bienvenue sur mon site web</h1>
<p>Ceci est notre site web.</p>
</body>
</html>
Arborescence du projet
État de Git
Dépôt propre
Les modifications ont été commitées. Prêt pour un push.
⚠️ Tentative de push : CONFLIT !
Ce qui se passe :
Le push échoue car le dépôt distant contient des modifications que vous ne possédez pas localement.
- Vous exécutez
git push - Git détecte que le dépôt distant a une version plus récente du même fichier
- Git refuse d'accepter le push pour éviter de perdre les modifications de votre collègue
- Le push échoue avec un message d'erreur
Message d'erreur typique
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
État de la synchronisation
Dépôt local
Commit v1.1 (votre modification)
Dépôt distant (serveur)
Commit v1.1 (du collègue) - DIFFÉRENT !
⚠️ CONFLIT : Les deux versions modifient le même fichier à la même ligne !
Erreur commune : Ne pas vérifier le statut du dépôt distant avant de faire un push !
Résoudre le conflit : git pull
Ce qui se passe :
Vous devez maintenant exécuter git pull pour récupérer les modifications du
serveur et résoudre le conflit.
- Git télécharge la version du serveur
- Git détecte que vous avez modifié le même fichier à la même ligne
- Git marque le fichier comme ayant un conflit de fusion (merge conflict)
- Vous devrez manuellement choisir quelle version garder
Commande à exécuter
git pull
Conflit dans le fichier
Git ajoute des marqueurs de conflit dans le fichier :
<h1>
<<<<<<< HEAD
Bienvenue sur mon site web
=======
Welcome to our awesome website
>>>>>>> origin/main
</h1>
Apperçu de la fenêtre de gestion de conflit Vs Code
Explication :
<<<<<<< HEADet>>>>>> origin/mainsont des marqueurs ajoutés par Git pour indiquer les sections en conflit=======est un séparateur qui sépare les deux versions en conflit
Résolution du conflit
Lorsqu'il y a un conflit de fusion, vous devez absolument choisir une des 3 options suivante :
- Option 1 : Garder votre version (Accepter la version actuelle)
- Option 2 : Garder la version du serveur (Accepter la version entrante)
- Option 3 : Fusionner les deux versions manuellement
Option 1 : Garder votre version
Vous acceptez VOTRE version locale du fichier. Ceci fera en sorte de conserver vos modifications et impactera le prochain commit.
Option 2 : Garder la version du serveur
Vous acceptez la version du serveur. Ceci fera en sorte de remplacer vos modifications locales par celles du serveur et impactera le prochain commit, ainsi que votre version locale.
Option 3 : Fusionner les deux
Vous fusionnez manuellement les deux versions en modifiant le fichier. Ceci fera en sorte de créer une nouvelle version fusionnée qui sera utilisée dans le prochain commit.
Une fusion est possible lorsque les modifications ne se chevauchent pas directement dans le fichier (elles ne sont pas sur les mêmes lignes de code)
Après avoir résolu le conflit, si vous êtes dans Vs Code, cliquez sur "Mark as Resolved" pour indiquer à Git que le conflit a été résolu. Git prépare alors le fichier pour le commit.
Finaliser la fusion : add, commit et push
Après avoir résolu le conflit :
- Vous avez manuellement résolu le conflit dans le fichier
- Git considère toujours que vous êtes en état de fusion incomplet
- Vous devez terminer la fusion en faisant un commit de fusion
Étapes à suivre
1. Ajouter le fichier résolu à la zone de transit
git add index.html
2. Créer un commit de fusion
git commit -m "Résolution du conflit : fusion avec les changements du serveur"
3. Envoyer le commit de fusion au serveur
git push
Après le push réussi
Dépôt local et distant
✓ Synchronisés
✓ Conflit résolu
✓ Changements des deux côtés fusionnés
Résumé : git pull → résoudre conflit → git add → git commit → git push