RE: Git stash certain files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux