I just created a big piece of code I want to commit in several separate commits.
So I can stage relevant parts, commit, stage, commit, … and so on until I have all my changes commited.
The missing part is how can I test whether I split the commit correcty.
I.e. whether the part that is in staging area at least compiles?
To do that I must somehow bring my work tree to be in sync with index (staging area) without losing the changes to be committed later.
What is the right way to do it?
What is the quickest way to do it?
Update:
How to do it with magit?
You could do it with:
An intermediate branch can be useful to record some intermediate commits when you are slowly adding some content to the index.
Then try an interactive session for adding just what you want:
Add any time you want to check what you have added:
If it compiles,
git commityour current work, and iftask1is not yet complete,git stash popto restore the full working tree and repeat.Once
task1is fully baked, you can trim all those ‘task1‘ commits, and merge the all work in master:If you want to conserve the history of some significant
task1commits, you can rebase firsttask1on top of master, before mergingmasterintask1(fast-forward)Finally, if your stash still contains some work in progress, repeat the all process for
task2.