Introduction
Git stash est une fonctionnalité puissante qui permet aux développeurs de sauvegarder temporairement les modifications non validées et de basculer entre différentes tâches. Ce tutoriel fournit des informations complètes sur la résolution des conflits de fusion lors de l'utilisation de Git stash, aidant les développeurs à gérer efficacement les modifications de code et à maintenir un flux de travail de développement propre et organisé.
Principes de base de Git Stash
Qu'est-ce que Git Stash?
Git stash est une fonctionnalité puissante qui permet aux développeurs de sauvegarder temporairement les modifications non validées sans les commettre dans le dépôt. Cela est particulièrement utile lorsque vous devez basculer de branche ou tirer des mises à jour, mais que vous avez des travaux en cours qui ne sont pas prêts à être validés.
Commandes clés de stash
| Commande | Description |
|---|---|
git stash |
Sauvegarde les modifications du répertoire de travail actuel |
git stash list |
Affiche tous les stash enregistrés |
git stash apply |
Applique le stash le plus récent |
git stash pop |
Applique et supprime le stash le plus récent |
git stash drop |
Supprime le stash le plus récent |
Flux de travail de base
graph LR
A[Working Directory] -->|git stash| B[Stash Area]
B -->|git stash pop| A
B -->|git stash apply| A
Exemple pratique
## Create some changes
echo "Temporary work in progress" > temp.txt
## Stash the changes
git stash
## Switch branches or perform other tasks
git checkout another-branch
## Return and apply stashed changes
git stash pop
Quand utiliser Git Stash
- Lorsque vous basculez de branche avec des modifications non validées
- Lorsque vous mettez en pause vos travaux actuels pour traiter des tâches urgentes
- Lorsque vous nettoyez temporairement le répertoire de travail
Bonnes pratiques
- Utilisez des messages descriptifs avec
git stash save "description" - Nettoyez régulièrement la liste des stash
- Ne vous appuyez pas sur le stash pour le stockage de code à long terme
LabEx recommande de maîtriser les techniques de stash pour améliorer l'efficacité du flux de travail de développement.
Aperçu des conflits de fusion
Comprendre les conflits de fusion
Les conflits de fusion se produisent lorsque Git ne peut pas résoudre automatiquement les différences entre deux commits. Cela se produit généralement lorsque :
- La même partie d'un fichier est modifiée de manière différente dans deux branches
- Des modifications sont apportées à la même ligne ou à des lignes de code voisines
Visualisation des conflits
graph TD
A[Branch A] -->|Modify Same Line| C{Merge Conflict}
B[Branch B] -->|Modify Same Line| C
C -->|Manual Resolution| D[Merged Code]
Scénarios de conflit courants
| Scénario | Description |
|---|---|
| Modification de ligne | Différentes modifications apportées à la même ligne |
| Suppression de fichier | Une branche supprime un fichier, une autre le modifie |
| Renommage de fichier | Conflits dans la structure des fichiers |
Marqueurs de conflit
Lorsqu'un conflit se produit, Git marque le fichier avec des marqueurs spéciaux :
<<<<<<< HEAD
Current branch code
=======
Incoming branch code
>>>>>>> branch-name
Détection des conflits
## Attempt to merge branches
git merge feature-branch
## If conflict occurs
## Conflict files will be marked with conflict markers
Stratégies de résolution
- Édition manuelle
- Utilisation d'outils de fusion
- Sélection de modifications spécifiques
Exemple pratique
## Create conflicting changes
echo "Original content" > file.txt
git add file.txt
git commit -m "Initial commit"
## Create two branches with different modifications
git checkout -b branch-a
echo "Branch A modification" > file.txt
git commit -am "Branch A change"
git checkout main
git checkout -b branch-b
echo "Branch B modification" > file.txt
git commit -am "Branch B change"
## Attempt merge (will cause conflict)
git merge branch-a
Bonnes pratiques
- Communiquez avec les membres de votre équipe
- Récupérez régulièrement les modifications
- Utilisez des messages de commit clairs
LabEx recommande de développer une approche systématique pour gérer efficacement les conflits de fusion.
Résolution des conflits de stash
Comprendre les conflits de fusion de stash
Les conflits de fusion de stash se produisent lorsque l'application d'une modification mise de côté (stash) dans un répertoire de travail modifié crée des modifications incompatibles.
Flux de travail de résolution des conflits
graph TD
A[Stash Changes] --> B{Apply Stash}
B -->|Conflict Detected| C[Manual Resolution]
C --> D[Resolve Conflicts]
D --> E[Commit Changes]
Étapes détaillées de résolution
1. Identifier les conflits
## Apply stash and detect conflicts
git stash apply
## View conflict status
git status
2. Marqueurs de conflit
<<<<<<< Updated upstream
Current branch changes
=======
Stashed changes
>>>>>>> Stash changes
Stratégies de résolution
| Stratégie | Description | Commande |
|---|---|---|
| Édition manuelle | Éditer directement les fichiers en conflit | Édition manuelle |
| Conserver le stash | Utiliser complètement les modifications mises de côté | git checkout --patch |
| Ignorer le stash | Rejeter les modifications mises de côté | git reset HEAD |
Exemple pratique de résolution
## Create stash with changes
git stash save "Experimental changes"
## Apply stash with potential conflicts
git stash apply
## Manually resolve conflicts in files
nano conflicted_file.txt
## Mark conflicts as resolved
git add conflicted_file.txt
## Complete merge
git commit -m "Resolved stash merge conflicts"
Gestion avancée des conflits
Utilisation d'outils de fusion visuels
## Configure merge tool
git config --global merge.tool vscode
## Resolve conflicts visually
git mergetool
Bonnes pratiques
- Valider (commit) ou mettre de côté (stash) les modifications avant de basculer de branche
- Utiliser des messages de stash descriptifs
- Nettoyer régulièrement la liste des stash
- Communiquer avec l'équipe sur les travaux en cours
Pièges courants
- Perte de travail lors de la résolution des conflits
- Résolution incomplète des conflits
- Écrasement de modifications importantes
LabEx recommande de pratiquer la résolution des conflits de stash dans un environnement sûr pour acquérir confiance et compétence.
Résumé
Comprendre comment résoudre les conflits de fusion de stash est essentiel pour maintenir un flux de travail Git fluide. En maîtrisant les techniques de résolution de conflits, les développeurs peuvent gérer avec confiance les modifications de code, minimiser les perturbations et garantir un contrôle de version sans faille sur différentes branches et étapes de projet.



