Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to stash changes in current folder?

Tags:

git

git-stash

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.

like image 392
stdcall Avatar asked May 08 '13 06:05

stdcall


People also ask

How do I stash changes to a folder?

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.

How do I stash changes in one file?

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.


2 Answers

git stash push -- path/to/folder 

Does the trick for me.

like image 58
gorpacrate Avatar answered Oct 30 '22 12:10

gorpacrate


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~ 
like image 39
Marco Leogrande Avatar answered Oct 30 '22 10:10

Marco Leogrande