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