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.
git stash
(qui peut être facilement perdu lorsque vous avez beaucoup de stashes et de twigs) 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
:
git commit
sur la twig de fonctions X
COMMIT_HASH_VALUE
pour plus tard git reset ${COMMIT_HASH_VALUE}
(FYI, la valeur par défaut pour git reset
est --mixed
)