79 votes

Pourquoi la réserve de git n'est-elle pas unique pour chaque branche ?

Je suppose que cela permet de déplacer des modifications d'une branche à l'autre, mais c'est à cela que sert le cherry picking et si vous ne faites pas un commit de vos modifications, peut-être ne devriez-vous pas les déplacer ?

Il m'est arrivé d'appliquer la mauvaise réserve à la mauvaise branche, ce qui m'a amené à me poser cette question.

67voto

Aristotle Pagaltzis Points 43253

Comme nous l'avons mentionné, si vous voulez une "réserve par branche", vous voulez vraiment une nouvelle branche qui se détache de la branche existante.

En outre, outre le fait déjà mentionné que la réserve vous permet d'accéder à une branche sur laquelle vous travaillez, elle vous permet également de interrupteur avant d'avoir tout engagé. Ceci est utile non pas pour le cherry-picking au sens habituel du terme, mais plutôt pour le cherry-picking votre copie de travail .

Par exemple, lorsque je travaille sur une branche de fonctionnalités, je remarque souvent des bogues mineurs ou des impuretés cosmétiques dans le code qui ne sont pas pertinents pour cette branche. Je les corrige tout de suite. Quand vient le moment de livrer, je livre sélectivement les changements pertinents mais pas les corrections et les cosmétiques. Au lieu de cela, je les cache, ce qui me permet de passer à ma branche "minor-fixes-on-stable", où je peux alors appliquer la cache et livrer chaque correction mineure séparément. (En fonction des changements en question, je vais également cacher certains d'entre eux encore une fois, pour passer à une branche de fonctionnalités différente, où j'appliquerai Ceux-ci .)

Cela me permet de me plonger dans le mode de programmation lorsque je travaille, sans me soucier de la bonne tenue de la bibliothèque de mon code. Ensuite, lorsque je fais une pause mentale, je peux revenir en arrière et classer soigneusement mes modifications dans les bonnes étagères.

Si la réserve n'était pas globale, ce type de flux de travail serait beaucoup plus difficile à réaliser.

20voto

Yasky Points 1834

Depuis Git 1.6, vous pouvez désormais appliquer des stashes à des branches en utilisant

git stash branch name_of_new_branch

Git créera la nouvelle branche pour vous, et vérifiez-la ! Pour plus d'informations, voir

  • le livre git

  • info git-stash et rechercher l'option= branch .

Je suppose que vous pouvez déplacer les réserves en utilisant

git stash branch <branch | new_branch> [<stash>]

et pour voir la liste de vos réserves, utilisez

git stash list

Référence

17voto

Patrick_O Points 570

Si vous voulez un "stash" qui fonctionne à partir d'une branche, faites quelque chose comme ceci pour stocker vos changements sur une nouvelle branche à partir de votre branche actuelle.

git checkout -b new_stash
git commit -a -m "stashed changes"

pour défaire la cachette

git reset HEAD^
git branch -d new_stash

git stash est particulièrement utile car il permet d'intégrer des modifications dans un arbre sale, c'est-à-dire si vous avez des modifications en cours et que vous souhaitez faire une opération d'archivage.

git pull

et vous ne pouvez pas, vous pouvez cacher vos changements, les retirer et les appliquer ensuite.

git stash
git pull
git stash apply
git stash clear

J'espère que cela vous a aidé !

5voto

Git-stash m'est surtout utile pour déplacer les modifications qui n'ont pas encore été vérifiées vers une branche différente de celle qui est actuellement vérifiée.

Par exemple, je me retrouve souvent à faire des changements simples sur une branche de correction de bogues, avant de découvrir que le changement sur lequel je travaille est plus complexe que je ne l'avais imaginé. Git-stash est le moyen le plus simple de déplacer cet ensemble de modifications vers une autre branche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X