¿Cómo puedo guardar git un archivo específico? [duplicar]


Posibles Duplicados:
Cómo guardar un archivo de varios archivos que han cambiado

¿Cómo puedo guardar un archivo específico dejando los otros actualmente modificados fuera del archivo que estoy a punto de guardar?

Por ejemplo, si git status me da esto:

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")

Y solo quiero guardar app/views/cart/welcome.thtml, ¿cómo haría eso? Algo como (pero por supuesto esto no funciona):

git stash save welcome_cart app/views/cart/welcome.thtml
 1074
Author: Cœur, 2011-04-01

2 answers

EDIT: Desde git 2.13, hay un comando para guardar una ruta específica al alijo: git stash push <path>. Por ejemplo: git stash push -m welcome_cart app/views/cart/welcome.thtml.

RESPUESTA ANTIGUA:

Puedes hacerlo usando git stash --patch (o git stash -p) enter entrarás en el modo interactivo donde se te presentará cada trozo que fue cambiado. Use n para omitir los archivos que no desea almacenar, y cuando encuentre el que desea almacenar, y q para salir y dejar los trozos restantes sin imprimir. {[7] } esconderá el muestra a Hunk y al resto de los hunks en ese archivo.

No es el enfoque más fácil de usar, pero hace el trabajo si realmente lo necesita.

 1639
Author: svick,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 10:48:04

Normalmente añado al índice los cambios que no quiero guardar y luego guardo con la opción keep keep-index.

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

El último paso es opcional, pero normalmente lo desea. Elimina los cambios del índice.


Advertencia Como se señaló en los comentarios, esto lo pone todo en el almacen, dos etapas y unstaged. El keep keep-index solo deja el índice solo después de que el alijo esté hecho. Esto puede causar conflictos de fusión cuando más tarde explote el alijo.

 254
Author: skalee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-20 23:18:06