How to stash changes in current folder?
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~
git stash push -- path/to/folder
Does the trick for me.
This should work for you:
cd <repo_root>
git add . # add all changed files to index
cd my_folder
git reset . # except for ones you want to stash
git stash -k # stash only files not in index
git reset # remove all changed files from index
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.