stgit usage

stgit

what's the point?

The idea is to be able to keep a clean git history that allows for it to be git bisectable.
Rather than co-mingling git commits, commits should contain one reasonable change.

stgit also allows for reordering commits before they are pushed.
So, if you're building out some new feature, you could work out different parts of you code and move them around after the fact.

workflow

initialize a patch

  stg init

create a new patch

  stg new <name of patch>

... make some changes

Add all changes

this seems to add every change to patch regardless on if it was staged or not.

  stg refresh  

show changes

  stg show
  stg show <some patch name>

unapply a single patch

stg pop

reapply a single patch

stg push

this applies the necessary push/pop operations to get to the patch

stg goto <patch-name>

catch up with remote

unapply every patch

stg pop --all
# you can checkout where you are with standard commands
#  e.g. `git status` `git log --oneline` `stg series`

pull down remote changes

git pull

reapply every patch

stg push --all

commit

  stg commit --all

this tells stg that the commits have graduated to actual commits (they were actual commits before, but now stg will stop tracking them).
I think the intent is for you to git push after this.

Reference