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 à 22:56, Sergey Organov <sorganov@xxxxxxxxx> a écrit :
> 
> Géry Ogam <gery.ogam@xxxxxxxxx> writes:
> 
>>> 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.
> 
> Did you actually try it and got conflict? I doubt there will be any if
> you don't modify anything after "git stash --keep-index" during testing,
> and if you do, than any method might bring conflicts.
> 
> In fact I just re-tested this to make sure, and got no conflicts.
> 
> -- Sergey Organov

git init
touch file
git add file
git commit
echo one >>file
git add file
echo two >>file
git stash push --keep-index
git stash pop

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