threads / discuss / 49633

Add config option to make "--keep-index" the default for "git stash push"

Subject: Add config option to make "--keep-index" the default for "git stash push"

## tl;dr

2 messages between Oct 22, 2018 and Oct 24, 2018.

replies: 1people: 2as markdown or json

Ralf Jung· Oct 22, 2018, 08:11 UTC · lore
Hi all,

I have been repeatedly bitten by the default behavior of `git stash` to stash not just the unstaged but also the staged changes, and then `git stash pop` making all changes unstaged. This means `git stash && git stash pop`, per default, loses information, and when I just spent 10min carefully selecting hunks to be staged that's quite frustrating.

I found that for myself, I usually expect `git stash` to only stash the changes that are not yet staged. So I'd like to configure git such that `--keep-index` is the default. That would also fix the information loss I mentioned above. (By now I am also aware of `git stash pop --index`, but (a) that's not the default either and (b) its documentation indicates it might not always work very well.) However, going over the `git-config` man page, I have not found any way to change the default behavior. Is that possible somehow? And if not, could you consider this a feature request to add such an option?

Kind regards, Ralf

brian m. carlson· Oct 24, 2018, 01:50 UTC · re: Ralf Jung · lore

Re: Add config option to make "--keep-index" the default for "git stash push"

On Mon, Oct 22, 2018 at 10:11:50AM +0200, Ralf Jung wrote:
Show 16 quoted lines
> Hi all,
> 
> I have been repeatedly bitten by the default behavior of `git stash` to stash
> not just the unstaged but also the staged changes, and then `git stash pop`
> making all changes unstaged. This means `git stash && git stash pop`, per
> default, loses information, and when I just spent 10min carefully selecting
> hunks to be staged that's quite frustrating.
> 
> I found that for myself, I usually expect `git stash` to only stash the changes
> that are not yet staged.  So I'd like to configure git such that `--keep-index`
> is the default.  That would also fix the information loss I mentioned above.
> (By now I am also aware of `git stash pop --index`, but (a) that's not the
> default either and (b) its documentation indicates it might not always work very
> well.)  However, going over the `git-config` man page, I have not found any way
> to change the default behavior.  Is that possible somehow?  And if not, could
> you consider this a feature request to add such an option?

First, let me say that I'm speaking for myself and not the whole list. Other people may have other opinions, and some may want to see a patch before deciding.

Personally, I am hesitant about such an option, since I know people use stash in scripts and hooks (whether that's a good idea or not), and ending up with an unclean tree after git stash would be surprising and could potentially cause data loss. (I have a co-worker who is doing exactly this.)

We do have a --no-keep-index option, so there is an out for people who don't want that behavior, and maybe that's enough to avoid problems. I usually deal with this situation by using an alias, which lets me have more control over the exact behavior I want.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204

← back to recent threads