Thread (2 messages) 2 messages, 2 authors, 2022-01-31

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 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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help