Re: Stage, test, and commit only some changes, then repeat
From: Géry Ogam <hidden>
Date: 2022-01-31 21:33:43
Le 31 janv. 2022 à 17:27, Sergey Organov [off-list ref] a écrit : Géry Ogam [off-list ref] writes:quoted
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 file2. Save away the remaining changes:git diff >patch git stash push -k3. Test the staged changes. 4. Commit the staged changes:git commit5. Restore the remaining changes:git apply patch6. 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