web-dev-qa-db-fra.com

Comment puis-je git stash un fichier spécifique?

Duplicate possible:
Comment cacher seulement un fichier sur plusieurs fichiers qui ont changé

Comment puis-je cacher un fichier spécifique en laissant les autres actuellement modifiés en dehors de la réserve que je vais sauvegarder?

Par exemple, si le statut git me donne ceci:

younker % gst      
# On branch master
# Your branch is ahead of 'Origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/controllers/cart_controller.php
#   modified:   app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")

et je veux seulement cacher app/views/cart/welcome.thtml, comment pourrais-je le faire? Quelque chose comme (mais bien sûr cela ne fonctionne pas):

git stash save welcome_cart app/views/cart/welcome.thtml
1363
ynkr

EDIT: Depuis Git 2.13, il existe une commande pour enregistrer un chemin spécifique vers la réserve: git stash Push <path>. Par exemple:

git stash Push -m welcome_cart app/views/cart/welcome.thtml

ANCIENNE RÉPONSE:

Vous pouvez le faire en utilisant git stash --patch (ou git stash -p) - vous entrerez en mode interactif qui vous présentera chaque morceau modifié. Utilisez n pour ignorer les fichiers que vous ne voulez pas cacher, y lorsque vous rencontrez celui que vous voulez, et q pour quitter et laisser les mecs restants sans mémoire. a va cacher le morceau affiché et le reste des morceaux dans ce fichier.

Ce n’est pas l’approche la plus conviviale, mais le travail est fait si vous en avez vraiment besoin.

2088
svick

J'ajoute généralement aux modifications d'indexation que je ne souhaite pas cacher, puis stocke avec l'option --keep-index.

git add app/controllers/cart_controller.php
git stash --keep-index
git reset

La dernière étape est facultative, mais généralement vous le voulez. Il supprime les modifications de l'index.


Avertissement Comme indiqué dans les commentaires, cela met tout dans la réserve, à la fois mis en scène et non mis en scène. Le paramètre --keep-index ne laisse que l'index une fois l'opération stash terminée. Cela peut entraîner des conflits de fusion lorsque vous supprimez ultérieurement la cachette.

290
skalee