Hi Randall, Thanks for the suggestion. I'm afraid it doesn't help that much because I can only use it from the command line. Usually I stage my files using some UI, like SourceTree. Otherwise it would be a lot of typing and or copying multiple paths. Think along the lines of, I modified 10 files, and they are distributed across 5 directories with deep paths. Regards, Caleb -----Original Message----- From: Randall S. Becker <rsbecker@xxxxxxxxxxxxx> Sent: Tuesday, August 31, 2021 3:02 PM To: Caleb Dougherty <caleb_dougherty@xxxxxxxxxxxx>; git@xxxxxxxxxxxxxxx Subject: RE: Git stash certain files CAUTION: This message originates from an external sender. On August 31, 2021 5:18 PM, Caleb Dougherty wrote: >Let me know if I should post this somewhere else, but having used git >now for a couple years in my work environment, and having come >from years of TFS usage, I still find that I want the ability to "shelve" certain file changes for later. > >My workflow is to create a personal branch and make changes to >different parts of our codebase, and then stage certain files (not all) that >are ready, and then commit them. Sometimes I need to undo certain files in my working directory but keep the changes for later. > >Git stash will kind of allow that, but it is messy since it snapshots >all my checked out files and I have to do several commands to get the >operation of "just stash these few files." > >Here is my "shelve" command. Stage the files you want to shelve and then: > git commit -m '%1' > git switch -C shelveset/%username%/!shelvename! > git switch @{-1} > git reset --keep HEAD~ > >Here is my "unshelve" command: > set branch=shelveset/%username%/%1 > git cherry-pick %branch% > git reset HEAD~ > git branch -D %branch% > >It would be nice if this were built into the stage command as an option >(to only stash staged files), or perhaps a new shelve/unshelve set of >commands could be added. The additional niceties of shelve/unshelve is >that it is on a branch that can be pushed to a remote (so I don't >lose it in a moment of absentmindedness or computer failure) and >potentially unshelved by someone else ("Hey Joe, take a look at my code on shelveset xyz"). > >P.s. I cannot easily use the usual git workflow where you only do X >feature change on X feature branch. I work on multiple features in >parallel and cannot be switching branches frequently or I will incur >too much overhead (not only running the commands to do the switch). Have a look at git stash push -- <pathspec>... I think that might do what you want. -Randall