Comment résoudre les conflits de fusion de stash

GitGitBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

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é.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/DataManagementGroup(["Data Management"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BasicOperationsGroup -.-> git/diff("Compare Changes") git/DataManagementGroup -.-> git/reset("Undo Changes") git/DataManagementGroup -.-> git/stash("Save Changes Temporarily") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") subgraph Lab Skills git/status -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/commit -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/diff -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/reset -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/stash -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/branch -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/checkout -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} git/merge -.-> lab-418260{{"Comment résoudre les conflits de fusion de stash"}} end

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

  1. Utilisez des messages descriptifs avec git stash save "description"
  2. Nettoyez régulièrement la liste des stash
  3. 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

  1. Édition manuelle
  2. Utilisation d'outils de fusion
  3. 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

  1. Valider (commit) ou mettre de côté (stash) les modifications avant de basculer de branche
  2. Utiliser des messages de stash descriptifs
  3. Nettoyer régulièrement la liste des stash
  4. 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.