Est-ce que git stash est spécifique à la twig ou pour tout le repository?

Je suis allé dans une succursale et j’ai travaillé. Je voulais aller dans une autre twig, mais je ne voulais pas commettre, alors je me suis git stash . Ensuite, j’ai effectué une git checkout . J’ai fait du travail là-bas et, comme dans la première twig, je voulais en sortir avant d’engager le travail. Donc, je suis git stash là aussi. Je suis revenu à la première twig et j’ai essayé de le décoiffer ( git stash pop ) en pensant qu’il obtiendrait la cachette de cette twig spécifique. J’ai été surpris de voir que le stock de (le dernier à être caché). J’avais l’impression que stash était spécifique à une twig, mais ce comportement indique qu’il n’y a qu’une seule réserve pour l’ensemble du repository local.

Est-ce que git stash est spécifique à la twig ou pour tout le repository? Si c’est pour l’ensemble du référentiel, puis-je lui transmettre des options pour le rendre spécifique à une twig?

Pour voir la stack de réserve actuelle:

 git stash list 

Pour choisir une cachette spécifique dans la stack, reportez-vous à celle-ci par le stash@{ number } indiqué ci-dessus.

Si vous voulez que le comportement soit par twig, vous pouvez simplement faire un commit (ou plusieurs commits) sur la twig. Vous pouvez toujours “restaurer” les commit (s) plus tard (par exemple, avec git reset , soit --soft ou --mixed ; voir la documentation de git reset , soit avec git rebase -i pour ne garder que le “commit” éventuel ( s) en rejetant les temporaires).

(Pour émuler git stash vous avez besoin d’au moins deux commits, un pour l’état d’index et un pour l’état de travail. Si vous ne souhaitez pas enregistrer et restaurer l’état d’index, vous pouvez simplement git add -A l’état complet de l’arborescence et le mettre dans la validation temporaire.Alors, git stash est un script shell, vous pouvez donc le copier et le modifier assez facilement pour le faire fonctionner par twig par défaut, en utilisant, par exemple, refs/pb-stash/ branch comme son espace de nom de travail, plutôt que le seul refs/stash global pour l’ensemble du repo. Vous pouvez toujours apporter un cache d’une twig à une autre en le nommant explicitement.)

Non et non. Git stash est par repository.

Voici une belle page sur la façon de l’utiliser.

git stash n’est pas par twig.

  • Au lieu de git stash (qui peut être facilement perdu lorsque vous avez beaucoup de stashes et de twigs)
  • Je suggère de faire un git commit pour enregistrer le code inachevé dans votre twig et quand vous êtes prêt à terminer le code, faites un git reset ${COMMIT_HASH_VALUE} pour récupérer le code inachevé
  • git commit et git reset utilisés ensemble correctement peuvent simuler un git stash pour une twig spécifique

Voici un scénario commun qui illustre la valeur et l’utilisation des commandes commit et reset :

  • vous travaillez sur la twig de fonctionnalité X et votre code ne comstack ou ne réussit même pas les tests
  • il y a un bogue qui est plus prioritaire que la nouvelle fonctionnalité actuelle et vous devez donc commencer à travailler immédiatement sur le correctif de bogue
  • plutôt que de faire un git stash (et la cachette se perd dans le mix car vous avez beaucoup de stashes et de nombreuses twigs)
  • vous pouvez faire un git commit sur la twig de fonctions X
    • notez le COMMIT_HASH_VALUE pour plus tard
  • vérifier une nouvelle twig Y pour le correctif
  • terminer le correctif sur la twig Y (faire une demande de fusion pour obtenir le correctif dans la ligne de base et supprimer la twig correctif)
  • puis vérifiez à nouveau la twig de fonctionnalité X
  • pour faire apparaître votre travail inachevé qui n’a pas compilé ou passé de test -> faites simplement une git reset ${COMMIT_HASH_VALUE}

(FYI, la valeur par défaut pour git reset est --mixed )