git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Proposal for git stash : add --staged option
@ 2015-04-22  8:30 edgar.hipp
  2015-04-22  9:25 ` Johannes Schindelin
  0 siblings, 1 reply; 4+ messages in thread
From: edgar.hipp @ 2015-04-22  8:30 UTC (permalink / raw)
  To: git

Hello,

There's some feature of git that I have been missing.
When you have a lot of unstaged files, and would like to test what 
happens if you undo some of the changes that you think are unecessary, 
you would rather keep a copy of those changes somewhere.

For example

Changed but not updated:
     M config_test.xml
     M config_real.xml

I have changed both config_test.xml and config_real.xml, but I think the 
changes made in config_test.xml are unnecessary. However, I would still 
like to keep them somewhere in case it breaks something.

In this case for example, I would like to be able to stash only the file 
config_test.xml

Eg:

git add config_test.xml
git stash --staged

So that after this, my git looks like this:

Changed but not updated:
     M config_real.xml

and my stash contains only the changes introduced in config_test.xml

`git stash --keep-index` doesn't give the necessary control, because it 
will still stash everything (and create unnecessary merge complications 
if I change the files and apply the stash)

Best,

Edgar

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Proposal for git stash : add --staged option
  2015-04-22  8:30 Proposal for git stash : add --staged option edgar.hipp
@ 2015-04-22  9:25 ` Johannes Schindelin
  2015-04-23  6:59   ` edgar.hipp
  2015-06-03 13:32   ` edgar.hipp
  0 siblings, 2 replies; 4+ messages in thread
From: Johannes Schindelin @ 2015-04-22  9:25 UTC (permalink / raw)
  To: edgar.hipp; +Cc: git

Hi Edgar,

On 2015-04-22 10:30, edgar.hipp@netapsys.fr wrote:

> When you have a lot of unstaged files, and would like to test what
> happens if you undo some of the changes that you think are unecessary,
> you would rather keep a copy of those changes somewhere.
> 
> For example
> 
> Changed but not updated:
>     M config_test.xml
>     M config_real.xml
> 
> I have changed both config_test.xml and config_real.xml, but I think
> the changes made in config_test.xml are unnecessary. However, I would
> still like to keep them somewhere in case it breaks something.
> 
> In this case for example, I would like to be able to stash only the
> file config_test.xml
> 
> Eg:
> 
> git add config_test.xml
> git stash --staged
> 
> So that after this, my git looks like this:
> 
> Changed but not updated:
>     M config_real.xml
> 
> and my stash contains only the changes introduced in config_test.xml
> 
> `git stash --keep-index` doesn't give the necessary control, because
> it will still stash everything (and create unnecessary merge
> complications if I change the files and apply the stash)

I often have the same problem. How about doing this:

```sh
git add config_real.xml
git stash -k
git reset
```

The difference between our approaches is that I keep thinking of the staging area as the place to put changes I want to *keep*, not that I want to forget for a moment.

Having said that, I am sympathetic to your cause, although I would rather have `git stash [--patch] -- [<file>...]` that would be used like `git add -p` except that the selected changes are *not* staged, but stashed instead.

Ciao,
Johannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Proposal for git stash : add --staged option
  2015-04-22  9:25 ` Johannes Schindelin
@ 2015-04-23  6:59   ` edgar.hipp
  2015-06-03 13:32   ` edgar.hipp
  1 sibling, 0 replies; 4+ messages in thread
From: edgar.hipp @ 2015-04-23  6:59 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

Hi,


the

> ```sh
> git add config_real.xml
> git stash -k
> git reset
> ```

is not very well suited because the -k option to keep the index. 
However, the index will still be put inside the stash.

So what you propose is equivalent to:

```sh
git stash
git stash apply stash@\{0\}
git checkout --config_test.xml
```

`git stash --patch` can do the job (and I think that's what I'm going to 
use from now), but it's still a bit cumbersome in some situations.

Best,

Edgar

Le 2015-04-22 11:25, Johannes Schindelin a écrit :
> Hi Edgar,
> 
> On 2015-04-22 10:30, edgar.hipp@netapsys.fr wrote:
> 
>> When you have a lot of unstaged files, and would like to test what
>> happens if you undo some of the changes that you think are unecessary,
>> you would rather keep a copy of those changes somewhere.
>> 
>> For example
>> 
>> Changed but not updated:
>>     M config_test.xml
>>     M config_real.xml
>> 
>> I have changed both config_test.xml and config_real.xml, but I think
>> the changes made in config_test.xml are unnecessary. However, I would
>> still like to keep them somewhere in case it breaks something.
>> 
>> In this case for example, I would like to be able to stash only the
>> file config_test.xml
>> 
>> Eg:
>> 
>> git add config_test.xml
>> git stash --staged
>> 
>> So that after this, my git looks like this:
>> 
>> Changed but not updated:
>>     M config_real.xml
>> 
>> and my stash contains only the changes introduced in config_test.xml
>> 
>> `git stash --keep-index` doesn't give the necessary control, because
>> it will still stash everything (and create unnecessary merge
>> complications if I change the files and apply the stash)
> 
> I often have the same problem. How about doing this:
> 
> ```sh
> git add config_real.xml
> git stash -k
> git reset
> ```
> 
> The difference between our approaches is that I keep thinking of the
> staging area as the place to put changes I want to *keep*, not that I
> want to forget for a moment.
> 
> Having said that, I am sympathetic to your cause, although I would
> rather have `git stash [--patch] -- [<file>...]` that would be used
> like `git add -p` except that the selected changes are *not* staged,
> but stashed instead.
> 
> Ciao,
> Johannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Proposal for git stash : add --staged option
  2015-04-22  9:25 ` Johannes Schindelin
  2015-04-23  6:59   ` edgar.hipp
@ 2015-06-03 13:32   ` edgar.hipp
  1 sibling, 0 replies; 4+ messages in thread
From: edgar.hipp @ 2015-06-03 13:32 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git

Hi again,

just wanted to tell that I have created a solution by doing a few lines 
of scripting:

git-cstash
```
#/bin/sh

git commit -m 'temporary, will be stashed soon'
git stash --include-untracked
git reset HEAD^1
git stash
git stash pop stash@{1}
```

Le 2015-04-22 11:25, Johannes Schindelin a écrit :
> Hi Edgar,
> 
> On 2015-04-22 10:30, edgar.hipp@netapsys.fr wrote:
> 
>> When you have a lot of unstaged files, and would like to test what
>> happens if you undo some of the changes that you think are unecessary,
>> you would rather keep a copy of those changes somewhere.
>> 
>> For example
>> 
>> Changed but not updated:
>>     M config_test.xml
>>     M config_real.xml
>> 
>> I have changed both config_test.xml and config_real.xml, but I think
>> the changes made in config_test.xml are unnecessary. However, I would
>> still like to keep them somewhere in case it breaks something.
>> 
>> In this case for example, I would like to be able to stash only the
>> file config_test.xml
>> 
>> Eg:
>> 
>> git add config_test.xml
>> git stash --staged
>> 
>> So that after this, my git looks like this:
>> 
>> Changed but not updated:
>>     M config_real.xml
>> 
>> and my stash contains only the changes introduced in config_test.xml
>> 
>> `git stash --keep-index` doesn't give the necessary control, because
>> it will still stash everything (and create unnecessary merge
>> complications if I change the files and apply the stash)
> 
> I often have the same problem. How about doing this:
> 
> ```sh
> git add config_real.xml
> git stash -k
> git reset
> ```
> 
> The difference between our approaches is that I keep thinking of the
> staging area as the place to put changes I want to *keep*, not that I
> want to forget for a moment.
> 
> Having said that, I am sympathetic to your cause, although I would
> rather have `git stash [--patch] -- [<file>...]` that would be used
> like `git add -p` except that the selected changes are *not* staged,
> but stashed instead.
> 
> Ciao,
> Johannes

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-06-03 13:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-22  8:30 Proposal for git stash : add --staged option edgar.hipp
2015-04-22  9:25 ` Johannes Schindelin
2015-04-23  6:59   ` edgar.hipp
2015-06-03 13:32   ` edgar.hipp

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).