2045 votes

Comment nommer une cachette dans git ?

J'ai toujours été sous l'impression que vous pourriez donner à un mettre un nom en faisant git stash save stashname, qui plus tard, vous pourrez appliquer en effectuant git stash apply stashname. Mais il semble que dans ce cas tout ce qui se passe c'est qu' stashname sera utilisé comme cachette description.

Il n'y a pas de nom d'une cachette? Si non, que recommanderiez-vous pour obtenir des fonctionnalités équivalentes? Essentiellement, j'ai une petite réserve qui je périodiquement comme à appliquer, mais ne veulent pas toujours à la chasse en git stash list quel est son véritable cachette nombre est.

1651voto

C'est comment vous le faites:

git stash save "my_stash"

où "my_stash" est la cachette nom...

Certains plus de choses utiles à savoir: Tous les caches sont stockés dans une pile. Type :

git stash list

Ce sera la liste de tous vos caches.

Pour appliquer une cachette et de le retirer de la cachette de la pile, Vous pouvez donner,

git stash pop stash@{n}

Pour appliquer une cachette et de le garder dans le coffre de la pile, type:

git stash apply stash@{n}

Où n dans l'index de l'planqué changement.

1248voto

Krof Drakula Points 5065

Vous pouvez effectivement trouver la cachette nom en utilisant git de la syntaxe d'expression régulière pour les objets d'adressage:

stash^{/<regex>}
:/<regex>

Par exemple, lors de l'enregistrement de votre cachette avec un nom de la sauvegarde:

git stash save "guacamole sauce WIP"

... vous pouvez utiliser une expression régulière à l'adresse que stash:

git stash apply stash^{/guacamo}

Cela permettra d'appliquer le plus jeune cachette qui correspond à l'expression régulière guacamo. De cette façon, vous n'avez pas à savoir quel est le nombre le coffre est dans la pile, vous avez juste à savoir son nom. Il n'y a pas de terser syntaxe pour cela, mais vous pouvez créer un alias dans votre .gitconfig le fichier:

[alias]
sshow = "!f() { git stash show stash^{/$*} -p; }; f"
sapply = "!f() { git stash apply stash^{/$*}; }; f"

Vous pouvez ensuite utiliser git sapply <regex> à appliquer que stash (sans tomber).
Vous pouvez ensuite utiliser git sshow <regex> montrer: les fichiers modifiés, les insertions et les suppressions

EDIT: Accessoires pour ce StackOverflow réponse sur la façon d'utiliser bash arguments dans git alias.

EDIT 2: Cette réponse utilisé pour contenir de l' drop et list des alias, mais depuis, j'ai supprimé, car drop nécessite l' stash@{n} alors que la syntaxe list n'ont pas de filtrer les caches. Si quelqu'un sait comment résoudre une cachette de hachage SHA-1 pour une cachette ref, puis j'ai pu mettre en œuvre les autres commandes.

EDIT 3: Par isyila suggestion, j'ai ajouté un patch drapeau pour montrer ce que le contenu de la cachette sont lors de la démonstration.

134voto

Adam Dymitruk Points 34999

Vous pouvez activer une cachette dans une direction si vous sentez que c'est assez important:

git stash branch <branchname> [<stash>]

à partir de la page de man:

Cela crée et vérifie une nouvelle branche nommée <branchname> à partir de la validation au cours de laquelle l' <stash> a été créé à l'origine, s'applique les modifications enregistrées dans <stash> pour le nouvel arbre de travail et l'index, puis descend le <stash> si cela se termine avec succès. Lorsque n <stash> est donné, s'applique à la plus récente.

Ceci est utile si la branche sur laquelle vous avez exécuté la commande git stash enregistrer a assez évolué pour que git stash appliquer échoue en raison de conflits. Depuis le dépôt est appliqué sur le dessus de l'engagement qui a été à la TÊTE au moment git stash a été exécuté, il restaure l'origine planqué état avec aucun conflit.

Vous pouvez par la suite rebase cette nouvelle branche à un autre endroit qui est un descendant de l'endroit où vous étiez lorsque vous avez planqué.

59voto

Kevin Ballard Points 88866

Caches ne sont pas censés être permanents choses comme vous voulez. Vous serait sans doute mieux servi l’utilisation des balises sur les validations. Construire la chose que vous voulez pour planquer. Faire un commit hors de lui. Créer un tag pour que s’engage. Puis faire reculer votre succursale à . Maintenant lorsque vous voulez réappliquer cette cachette, vous pouvez utiliser ( est ).

8voto

<h3>Alias<p><code></code></p><h3>Son utilisation</h3><p><code></code></p><ul> <li>compatible avec Git pour Windows</li> </ul><p><em>Edit : J’ai collé à ma solution originale, mais je ne vois pourquoi la majorité préfère version de Etan Reisner (ci-dessus). Donc, juste pour l’enregistrement :</em></p><pre><code></code></pre></h3>

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