Git: Guardar un solo archivo


Me gustaría poder guardar solo los cambios de un solo archivo:

git stash save -- just_my_file.txt

Lo anterior no funciona. ¿Alguna alternativa?

Author: CharlesB, 2012-09-14

4 answers

Creo que stash -p es probablemente la opción que desea, pero en caso de que se encuentre con otras cosas aún más difíciles en el futuro, recuerde que:

Stash es realmente solo una alternativa muy simple a los únicos conjuntos branch un poco más complejos. Stash es muy útil para mover cosas rápidamente, pero puedes lograr cosas más complejas con ramas sin mucho más dolor de cabeza y trabajo.

# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master

Vaya y haga lo que quiera, y luego simplemente rebase y / o merge el tmpbranch. Realmente no es que mucho trabajo extra cuando necesitas hacer un seguimiento más cuidadoso de lo que te permitirá stash.

 89
Author: Wes Hardaker,
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
2012-09-14 13:15:28

Puede almacenar interactivamente líneas individuales con git stash -p (análogo a git add -p).

No toma un nombre de archivo, pero puede omitir otros archivos con d hasta que llegue al archivo que desea almacenar y el almacenamiento de todos los cambios allí con a.

 35
Author: Benjamin Bannier,
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
2012-09-14 09:25:29

La mejor opción es preparar todo menos este archivo, y decirle a stash que mantenga el índice con git stash save --keep-index, almacenando así su archivo sin formato:

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

Como señala Dan, thefiletostash es el único que se restablece con el alijo, pero también almacena los otros archivos, por lo que no es exactamente lo que quieres.

 13
Author: CharlesB,
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
2012-09-14 12:53:11

En caso de que en realidad significa "discard changes" cada vez que utilice 'git stash' (y realmente no usar git stash para guardar temporalmente), en ese caso se puede utilizar

git checkout -- <file>

Tenga en cuenta que git stash es solo una alternativa más rápida y simple a ramificar y hacer cosas.

 12
Author: Devesh,
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
2014-12-19 12:14:32