Cachette de git avec nom

Cachette de git avec nom

Comment git ranger vos modifications avec le nom associé et le trouver après

Les développeurs doivent souvent effectuer plusieurs tâches. Vous travaillez peut-être sur une nouvelle fonctionnalité et il pourrait y avoir une demande pour corriger un bogue. Ou vous pourriez être le développeur principal sur plusieurs projets.

Lorsque vous basculez entre les tâches, parfois vous ne voulez pas commettre un travail inachevé. Dans ces cas, la commande Git Stash peut être d'une grande aide. Il vous permet d'empiler vos modifications et de revenir plus tard aux travaux inachevés sans ajouter des engins inutiles à vos référentiels Git.

Un flux de travail pour la cachette Git

Initialisons une branche Git Master et engageons un fichier Readme.SMS.

$ mkdir my_project
$ cd my_project /
$ git init
$ tactile readme.SMS
$ git add -a
$ git commit -m "initialiser"

Ajoutons maintenant un autre fichier appelé un.txt à la branche maîtresse.

$ toucher un.SMS
$ git add -a
$ git commit -m "a ajouté un.SMS"

Si vous vérifiez l'histoire, vous verrez:

$ Git Log --Oneline
D79F7AA a ajouté un.SMS
9434d7e Initialise

Maintenant, créons une branche de fonction1 et ajoutons un B.fichier txt:

$ Git Branch Feature1
$ git cockout feature1
$ touch b.SMS
$ git add -a
$ git commit -m "ajouté b.SMS"

Ouvrez votre B.Fichier txt dans un éditeur et mettre dans la ligne:

Je suis sur le point de changer cela en…

Et enregistrer le fichier. Si vous vérifiez votre statut GIT, vous voyez ce qui suit:

$ statut git
Sur la fonctionnalité de branche1
Modifications non mises en scène pour engager:
(Utilisez "Git Add…" pour mettre à jour ce qui sera engagé)
(Utilisez "Git Checkout - ..." pour éliminer les modifications dans le répertoire de travail)
Modifié: B.SMS
Aucune modification ajoutée à Commit (utilisez "git add" et / ou "git commit -a")

Supposons, à ce stade, vous obtenez une demande pour mettre à jour le A.Fichier txt sur la branche maîtresse. Mais tu n'as pas fini avec le b.fichier txt. Si vous essayez de consulter la branche maître, vous obtenez l'erreur suivante:

$ maître de paiement
Erreur: vos modifications locales des fichiers suivantes seraient écrasées par la caisse:
b.SMS
S'il vous plaît, engagez vos modifications ou les cachez-les avant de pouvoir changer de succursales.
Avorté

Mais vous ne voulez pas commettre le travail inachevé en b.SMS. Vous pouvez utiliser la cachette Git dans cette situation:

$ git cachette
Répertoire de travail enregistré et WIP de l'état d'index sur fonction1: 2cfe39b ajouté b.SMS
La tête est maintenant à 2cfe39b ajouté b.SMS

Si vous vérifiez B.txt, il doit être vide:

$ chat b.SMS
$

Si vous vérifiez la cachette, vous verrez:

$ git cachette
Stash @ 0: WIP sur fonction1: 2cfe39b ajouté b.SMS

Si vous essayez de consulter la branche maître, vous devriez pouvoir le faire maintenant:

$ maître de paiement
Changé de succursale «maître»

Supposons que vous effectuiez les modifications nécessaires sur le maître, puis revenez à la branche de fonctionnalité: Branche:

$ git cockout feature1

Votre B.txt est toujours vide:

$ chat b.SMS
$

Mais si vous obtenez les modifications de la cachette en utilisant la commande suivante:

$ git stash appliquer
Sur la fonctionnalité de branche1
Modifications non mises en scène pour engager:
(Utilisez "Git Add…" pour mettre à jour ce qui sera engagé)
(Utilisez "Git Checkout - ..." pour éliminer les modifications dans le répertoire de travail)
Modifié: B.SMS
Aucune modification ajoutée à Commit (utilisez "git add" et / ou "git commit -a")

La commande Stash Apply a pris les modifications cachées et l'a appliquée à B.fichier txt
Vous pouvez terminer votre travail en b.txt mon modification de la ligne

Je suis sur le point de changer cela en…


Pour

Je suis sur le point de changer ceci en

Allez maintenant et commettez vos modifications:

$ git add -a
$ git commit -m "modifié b.SMS"

L'application d'une cachette ne le nettoie pas automatiquement à partir de la cachette. Vous devez le nettoyer manuellement:

$ git cachette
Réfs / cachettes supprimées @ 0 (0A66A16B32633E8D564D08E38254C491C1B1D3BE)

Pourquoi Git Stash avec le nom?

La cachette git est une pile. Afin que vous puissiez continuer à empiler vos modifications.

Supposons que vous ajoutiez «x» à b.txt, cachez-le, ajoutez un «y» à b.txt, racheter et ajouter un «z» à b.txt et cachez-le. Si vous vérifiez l'histoire de la cachette, vous verrez quelque chose comme ceci:

$ git cachette
Stash @ 0: WIP sur la fonctionnalité 1: 2d6f515 modifié B.SMS
Stash @ 1: WIP sur Fonction1: 2D6F515 Modifié B.SMS
Stash @ 2: WIP sur Fonction1: 2D6F515 Modifié B.SMS

Vous n'avez aucun moyen de savoir quelle réserve a qui change. Lorsque vous cachez, vous pouvez utiliser l'option de sauvegarde pour faire des commentaires. Vous pouvez utiliser les commentaires pour attacher un nom à votre cachette et les rendre reconnaissables:

$ git stash Économisez "x"
Répertoire de travail enregistré et état d'index sur fonction1: x
La tête est maintenant à 2d6f515 modifié B.SMS

Pour ajouter la modification «X», «Y» et «Z», vous pouvez obtenir ce qui suit dans votre cachette en utilisant l'option de sauvegarde pour chaque cachette:

$ git cachette
Stash @ 0: sur fonction1: z
Stash @ 1: sur fonction1: y
Stash @ 2: sur fonction1: x

Maintenant, vous avez un nom pour chaque changement que vous avez caché. Malheureusement, vous ne pouvez pas utiliser le nom pour récupérer la cachette. Vous devrez utiliser le numéro de cachette. Supposons que vous vouliez obtenir votre changement «y». Vous voyez cette cachette @ 1 est y. Ainsi, vous pouvez appliquer ce changement à votre branche actuelle:

$ git Stash Appliquer Stash @ 1

Et votre B.txt devrait avoir les modifications de Stash @ 1.

Vous pouvez utiliser la même méthode pour laisser tomber une cachette. Supposons que vous réalisez que vous n'avez plus besoin de la cachette X. Vous pouvez simplement utiliser la commande suivante pour supprimer cette réserve:

$ git stash drop sash @ 2

Et la cachette devrait disparaître:

$ git cachette
Stash @ 0: sur fonction1: z
Stash @ 1: sur fonction1: y

N'oubliez pas que si vous utilisez les options d'application et d'abandon sans aucun paramètre, il utilisera le haut de la pile (Stash @ 0).

Conclusion

La commande Git Stash est un moyen puissant de gérer votre espace de travail. La maîtrise de cette commande vous aidera à travailler plus efficacement.

Une étude plus approfondie:
  • https: // git-scm.com / book / en / v1 / git-tools étanche
Les références:

Stack Overflow: Exploiter le nom et le retraité