git stash enregistre et restaure la progression du travail

Scénarios d'application :

1. Lorsqu'un projet est en cours de développement sur la branche dev, un bug apparaît dans le projet et doit être réparé en urgence. Cependant, le contenu en cours de développement n'est qu'à moitié terminé et vous ne souhaitez pas encore le soumettre. Pour le moment, vous pouvez utiliser la commande git stash pour enregistrer le contenu modifié dans la zone stack., puis passer en douceur à d'autres branches pour la réparation des bogues. Une fois la réparation terminée, revenez à la branche dev et restaurez le contenu qui vient d'être enregistré à partir du empiler.
2 En raison de la négligence, le contenu qui aurait dû être développé sur la branche dev a été développé sur le maître. Il doit être rebasculé vers la branche dev pour le développement. Vous pouvez utiliser git stash pour enregistrer le contenu dans la pile, et après en revenant à la branche dev, restaurez simplement à nouveau le contenu.
3. Si vous souhaitez extraire le dernier code, mais que vous ne souhaitez pas rajouter l'enregistrement de validation pour le moment, commencez par git stash, puis pull, et enfin git stash pop.En général, la fonction de git stash
La commande consiste à mettre les choses que vous ne voulez pas encore valider mais que vous avez déjà. Le contenu modifié est enregistré dans la pile et le contenu de la pile peut être restauré ultérieurement sur une certaine branche . Cela signifie que le contenu du stockage peut non seulement être restauré dans la branche développée à l'origine, mais également dans toute autre branche spécifiée, et peut s'étendre sur plusieurs branches . La portée de git stash inclut le contenu de l'espace de travail et de la zone de préparation, ce qui signifie que tout le contenu non validé sera enregistré dans la pile.

Explication détaillée de la commande
1 git stash [Important]
Il peut enregistrer toutes les modifications non validées (zone de travail et zone de préparation) dans la pile pour une restauration ultérieure du répertoire de travail actuel.

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/CacheTest.java
        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")

$ git stash
Saved working directory and index state WIP on master: b2f489c second

$ git status
On branch master
nothing to commit, working tree clean

2 La fonction de git stash save
est équivalente à celle de git stash. La différence est que vous pouvez ajouter quelques commentaires, comme suit :
L'effet de git stash save "test1":

stash@{0} : sur le maître : test1

3 git stash list
pour afficher le contenu de la réserve actuelle

4 git stash pop [Important]
Affichez le contenu du cache actuel et appliquez-le au répertoire de travail correspondant à la branche actuelle .
Remarque : Cette commande supprime le contenu récemment enregistré dans la pile (la pile est la première entrée, la dernière sortie) et
exécute les commandes git stash save "test1" et git stash save "test2" de manière séquentielle. L'effet est le suivant :

$ git stash list
stash@{
    
    0}: On master: test2
stash@{
    
    1}: On master: test1

$ git stash pop
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{
    
    0} (afc530377eacd4e80552d7ab1dad7234edf0145d)

$ git stash list
stash@{
    
    0}: On master: test1

On peut voir que la cachette de test2 apparaît en premier. S'il n'y a pas de cache étape par étape, tous les fichiers entrent et sortent en même temps.
Si le contenu récupéré à partir du cache est en conflit avec le contenu du répertoire actuel, c'est-à-dire que le contenu récupéré et le répertoire actuel modifient les données dans la même ligne, une erreur s'affichera et le conflit devra être résolu. Vous pouvez le faire en créant une nouvelle branche, résoudre les conflits

5 git stash apply
applique le contenu de la pile au répertoire courant. Contrairement à git stash pop, cette commande ne supprimera pas le contenu de la pile. En d'autres termes, cette commande peut appliquer le contenu de la pile au répertoire de travail plusieurs fois. , s'adaptant en cas de succursales multiples

$ git stash apply
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   src/main/java/com/wy/StringTest.java

no changes added to commit (use "git add" and/or "git commit -a")

$ git stash list
stash@{
    
    0}: On master: test2
stash@{
    
    1}: On master: test1

Le contenu de la pile n'est pas supprimé.
Vous pouvez utiliser git stash apply + stash name (tel que stash@{1}) pour spécifier quelle cachette restaurer dans le répertoire de travail actuel
6 git stash drop + name
pour supprimer une cachette spécifiée de la pile

7 git stash clear
efface tout ce qui se trouve dans la pile

8 git stash show
pour voir la différence entre le dernier cache enregistré dans la pile et le répertoire actuel.

9 git stash branch
crée une branche à partir du dernier stockage.
Scénario d'application : Lorsqu'une partie du travail est stockée, ignorez-la pour le moment et poursuivez le développement sur la branche actuelle. Plus tard, lorsque vous souhaitez restaurer le contenu du stash dans le répertoire de travail actuel, s'il s'agit d'une modification du même fichier (même s'il ne s'agit pas de données homologues), des conflits peuvent alors survenir et la récupération échoue, ce qui est résolu en créant une nouvelle branche. Peut être utilisé pour résoudre les conflits entre le contenu de la cachette et le contenu du répertoire actuel.
Lorsque des conflits surviennent, ils doivent être résolus manuellement.

Autres :
par défaut, git stash met en cache les fichiers suivants :

  • Modifications ajoutées à la zone de préparation (changements échelonnés)
  • Modifications suivies par Git mais non ajoutées à la zone de préparation (modifications non mises en scène)

Mais le fichier ne sera pas mis en cache :

  • Nouveaux fichiers dans le répertoire de travail (fichiers non suivis)
  • Les fichiers ignorés (fichiers ignorés)
    sont des fichiers qui ne sont pas sous contrôle de version git et ne peuvent pas être enregistrés par git stash. Par conséquent, les fichiers nouvellement ajoutés ne seront pas stockés si stash est exécuté directement . À ce stade, vous devez d'abord exécuter git add pour l'ajouter au contrôle de version git, puis git stash.

Liens de référence :
1. https://blog.csdn.net/stone_yw/article/details/80795669

Je suppose que tu aimes

Origine blog.csdn.net/qq_44804542/article/details/115875034
conseillé
Classement