RE: Git stash certain files
- From
Randall S. Becker <rsbecker@nexbridge.com>
- Date
- Aug 31, 2021, 22:01 UTC
- Message-ID
- <058f01d79eb3$c5001310$4f003930$@nexbridge.com>
- In-Reply-To
- <BN6PR17MB3185652B92D61670BC92ABA5FECC9@BN6PR17MB3185.namprd17.prod.outlook.com>
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
Show 15 quoted lines
>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 newshelve/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 multiplefeatures 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