¿Cómo puedo guardar un archivo específico?

Resuelto ynkr asked hace 13 años • 14 respuestas

¿Cómo puedo guardar un archivo específico y dejar los demás 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
ynkr avatar Apr 01 '11 04:04 ynkr
Aceptado

EDITAR: 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

ANTIGUA RESPUESTA:

Puedes hacerlo usando git stash --patch(o git stash -p): ingresarás al modo interactivo donde se te presentará cada fragmento que se modificó. Úselo npara omitir los archivos que no desea guardar, ycuando encuentre el que desea guardar, y qpara salir y dejar los archivos restantes sin guardar. aguardará el trozo mostrado y el resto de los trozos en ese archivo.

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

svick avatar Mar 31 '2011 21:03 svick

Por lo general, agrego al índice los cambios que no quiero guardar y luego los guardo con --keep-indexla opción.

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

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


Advertencia Como se indica en los comentarios, git stash --keep-indexcoloca todo en el alijo, tanto en preparación como en preparación. Simplemente --keep-indexdeja el índice en paz una vez que el alijo está listo. Esto puede causar conflictos de fusión cuando luego extraigas el alijo.

skalee avatar Dec 18 '2012 20:12 skalee

Para guardar un archivo:

git stash -- filename.txt

Para dar un mensaje en el comando en lugar de ingresarlo cuando se le solicite, agregue -m antes de la parte del archivo, por ejemplogit stash -m "stash-message" -- filename1.txt

Para guardar más de un archivo:

git stash -m "stash-message" -- filename1.txt filename2.txt…
HongchaoZhang avatar Dec 01 '2021 02:12 HongchaoZhang