web-dev-qa-db-fra.com

Pourquoi la cachette de git est-elle unique par branche?

Je suppose que cela permet de déplacer des changements d'une branche vers la suivante, mais c'est ce que la cueillette de cerise est pour et si vous ne faites pas de validation de vos changements, vous ne devriez peut-être pas les déplacer?

J'ai fait l'occasion de la mauvaise cachette à la mauvaise branche, ce qui m'a laissé s'interroger sur cette question.

77
iros

Comme mentionné, si vous voulez une "réserve par branche", vous voulez vraiment une nouvelle succursale de la branche existante.

En outre, outre le fait déjà mentionné que la cachette vous permet de tirer une branche sur laquelle vous travaillez, cela vous permet également de commutateur succursales avant d'avoir tout commis. Cela n'est utile pas pour la cueillette de cerisier dans le sens habituel que pour la cueillette de cerisier votre copie de travail.

F.Ex., tout en travaillant sur une branche de fonctionnalité, je remarquerai souvent des insectes mineurs ou des impuretés cosmétiques dans le code qui ne sont pas pertinents pour cette branche. Eh bien, je fixe juste ceux qui sont tout de suite. Lorsque le temps vient de commettre, j'ai validé de manière sélective les modifications pertinentes, mais pas les correctifs et les cosmétiques. Au lieu de cela, je cache ceux-ci, ce qui me permet de passer à ma branche mineure-fixes-stable, où je peux ensuite appliquer la cachette et commettre chaque fixation mineure séparément. (Selon les changements de question, je fermerai également certaines d'entre elles pour passer à une branche de fonctionnalité différente, où je postule celles.)

Cela me permet d'aller au fond du mode de programmation lorsque je travaille et ne vous inquiétez pas de la bibliothéconomie appropriée de mon code. Ensuite, lorsque je prends une pause mentale, je peux revenir en arrière et trier soigneusement mes changements dans toutes les bonnes étagères.

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

69
Aristotle Pagaltzis

À partir de GIT 1.6, vous pouvez maintenant appliquer des cachettes à des succursales en utilisant

git stash branch name_of_new_branch

GIT créera la nouvelle branche pour vous et vérifiera! Pour plus d'informations, voir

  • le livre git

  • info git-stash et rechercher sur option = branch.

Je suppose que vous pouvez déplacer des cachettes en utilisant

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

et pour voir une liste de vos catastrophes, utilisez

git stash list

Référence

19
iGbanam

si vous voulez une "cachette" qui exécute une succursale, faites quelque chose comme ça pour stocker vos modifications sur une nouvelle succursale de votre branche actuelle.

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

pour annuler la cachette

git reset HEAD^
git branch -d new_stash

git Stash est particulièrement utile car vous pouvez tirer des changements dans un arbre sale, c'est-à-dire si vous avez des modifications exceptionnelles et que vous voulez faire un

git pull

et vous ne pouvez pas, vous pouvez cacher vos modifications, tirer puis appliquer la cachette

git stash
git pull
git stash apply
git stash clear

j'espère que cela a aidé!

17
Patrick_O

git-Stash est le plus utile pour moi de déplacer des modifications non encore vérifiées sur une branche différente de celle qui est actuellement vérifiée.

Par exemple - je me trouve souvent de faire des changements simples sur une branche de corrections de bugs; Seulement pour constater qu'un changement que je travaille est plus complexe que je deviné d'abord. Git-Stash est le moyen le plus simple de déplacer cet ensemble de modifications à une branche différente.

5
jmxz