Re: Stage, test, and commit only some changes, then repeat

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

 



> Le 31 janv. 2022 à 17:27, Sergey Organov <sorganov@xxxxxxxxx> a écrit :
> 
> Géry Ogam <gery.ogam@xxxxxxxxx> writes:
> 
>> Hello,
>> 
>> I would like to stage, test, and commit only *some* changes of the
>> working tree, and then repeat this process with the remaining changes.
>> 
>> My current solution (published at
>> https://stackoverflow.com/a/70914962/2326961):
>> 
>> 1. Stage some changes:
>>   ```
>>   git add -p file
>>   ```
>> 2. Save away the remaining changes:
>>   ```
>>   git diff >patch
>>   git stash push -k
>>   ```
>> 3. Test the staged changes.
>> 4. Commit the staged changes:
>>   ```
>>   git commit
>>   ```
>> 5. Restore the remaining changes:
>>   ```
>>   git apply patch
>>   ```
>> 6. Go to step 1.
>> 
>> It is not ideal because a) it uses a patch file for saving the
>> remaining changes; b) it uses the stash only for setting the working
>> tree to the index state.
>> 
>> It would be ideal if I could save *only* the remaining changes in the
>> stash instead of resorting to a patch file. How to do it?
> 
> It looks like you don't need patch file for this workflow. What's wrong with:
> 
> git add...
> git stash push --keep-index
> ... check, git add fixes
> git commit
> git stash apply
> 
> ???
> 
> -- Sergey Organov

Hello Sergey,

`git stash` saves the transition from the HEAD state to the working tree state. It also sets the working tree to the *HEAD* state.

`git stash --keep-index` saves the transition from the HEAD state to the working tree state. It also sets the working tree to the *index* state.

`git stash pop` applies the last saved transition. So if the working tree was not in HEAD state (like after `git stash --keep-index`), there will be a conflict.

Best,

Géry Ogam



[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