Git: ¿cómo usar stash -p para esconder files específicos?

Intento descubrir cómo esconder dos files específicos entre muchos cambios no confirmados.

Esta muy prometedora respuesta, ¿ oculta solo un file de varios files que han cambiado con Git? , no muestra el uso y estoy teniendo problemas para resolverlo.

Lo siguiente no funciona y la página man no es muy útil (parece hablar de salida de terminal, no de almacenamiento). Quiero esconder application.conf y plugins.sbt y luego confirmar todo lo demás.

 app (master)$ git status On branch master Your branch is ahead of 'origin/master' by 29 commits. (use "git push" to publish your local commits) Changes to be committed: (use "git reset HEAD <file>..." to unstage) modified: views/mobile/blog.scala.html modified: views/mobile/slideshow.scala.html modified: ../public/css/mobile/styles.css Unmerged paths: (use "git reset HEAD <file>..." to unstage) (use "git add <file>..." to mark resolution) both modified: ../conf/application.conf 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: ../project/plugins.sbt app (master)$ git stash -p ../conf/application.conf ../project/plugins.sbt usage: git stash list [<options>] or: git stash show [<stash>] or: git stash drop [-q|--quiet] [<stash>] or: git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>] or: git stash branch <branchname> [<stash>] or: git stash [save [--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [<message>]] or: git stash clear 

Utilizar

 git stash --patch 

git mostrará un dialog como el siguiente, por cada trozo en su posible compromiso:

 diff --git files over files index e69de29..ac4f3b3 100644 --- a/file.txt +++ b/file.txt @@ -0,0 +1 @@ +you did awesome stuff! Stash this hunk [y,n,q,a,d,/,e,?]? 

Un hunk es una variedad coherente de líneas a medida que lo produce git-diff. Para seleccionar un solo file, tendrá que declinar agregar lockings, siempre y cuando llegue a ese file, entonces puede agregar todos los trozos de ese file.

También puedes elegir un solo trozo respondiendo la pregunta con y es. Si el trozo parece ser demasiado grande, incluso podrías dejarlo. También es posible eliminar el trozo actual.


El uso de --patch es posible en diferentes commands de git (fe stash , commit y add ).

Esta es la explicación detallada de la --patch –patch, que obtuve de la documentation de los desarrolladores :

 This lets you choose one path out of a 'status' like selection. After choosing the path, it presents the diff between the index and the working tree file and asks you if you want to stage the change of each hunk. You can select one of the following options and type return: y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk or any of the remaining ones a - stage this hunk and all later hunks in the file d - do not stage this hunk or any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk ? - print help 

Use git stash -p sin arguments. A continuación, podrá seleccionar de forma interactiva los cambios que quiera ocultar:

 diff --git a/test b/test index acbd8ae..662d47a 100644 --- a/test +++ b/test @@ -10,6 +10,7 @@ test (...) + test (...) Stash this hunk [y,n,q,a,d,/,e,?]? 

Lamentablemente, no es posible seleccionar files, solo trozos.