I would like to stash only the changes in the current folder and its subfolders.
How can I achieve that?
I have tried the obvious approach - git stash .
but it doesn't seem to work.
I know I can create temporary commits and delete them afterward, but I want to know if git stash
supports stashing specific folders.
Basically, it adds all changed files to index, except for folder (or files) you want to stash. Then you stash them using -k ( --keep-index ). And finally, you reset index back to where you started.
To stash a specific file, use the “git stash push” command and specify the file you want to stash. However, the other tracked files that may be modified in your current working directory are untouched.
git stash push -- path/to/folder
Does the trick for me.
git stash
will not let you save partial directories with a single command, but there are some alternatives.
You can use git stash -p
to select only the diffs that you want to stash.
If the output of git stash -p
is huge and/or you want a scriptable solution, and it is acceptable to create temporary commits, you can create a commit with all the changes but those in the subdirectory, then stash away the changes, and rewind the commit. In code:
git add -u :/ # equivalent to (cd reporoot && git add -u) without changing $PWD git reset HEAD . git commit -m "tmp" git stash # this will stash only the files in the current dir git reset HEAD~
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With