Skip to content
safegit revert-continue
On this page

conclude a revert git stopped before committing.

#safegit revert-continue

conclude a revert git stopped before committing. Every conflicted path is named with --resolve (or in a --resolve-file). For a SINGLE revert safegit writes the commit itself: one parent, YOU as both author and committer -- a revert is your own new change, not the reverted commit author's, which is git's own division and the opposite of what a cherry-pick does -- git's own message draft with its comment block stripped or -m, the repository's commit-msg hook run, and the revert's state files removed afterwards. Note the stage keywords: a revert applies an INVERSE patch, so theirs is what the reverted commit's parent held -- resolving to theirs keeps the revert, resolving to ours keeps the commit being reverted. A QUEUED sequence -- git revert <a> <b>, which only raw git can start, since safegit's revert undoes one commit -- is REFUSED, naming git's own 'revert --continue' and '--abort': the queue is part of the state a conclusion removes, so finishing one step of it would throw the rest away

Effect: mutating

#Flags

Flags
NameShortTypePresenceEnvDescription
--resolvelist[str]optionalresolve one conflicted path, as 'path=ours|theirs|worktree|delete' (repeatable, once per path; the split is on the last '=', so a path containing one stays intact). The keywords are defined by INDEX STAGE: ours is the stage-2 blob -- your branch's current content; theirs is the stage-3 blob -- the result of UNDOING the reverted commit, which is what its parent held -- not the reverted commit's own content; worktree is the file's current content on disk; delete leaves the path out of the commit. ours and theirs also WRITE the chosen content into the working tree (git's own checkout --ours), and delete removes the file from disk (git's own rm). Paths are repository-relative. Omitted, every conflicted path is unresolved, which is a refusal listing them
--resolve-filestroptionalread resolutions from a TOML file of [[resolutions]] tables, each with a path and a choice key; combinable with --resolve, and a path named by both is a hard error; omitted means the --resolve flags are the whole declaration
--m-mlist[str]optionalcommit message paragraph, replacing git's own draft; repeating it joins the values with a blank line between them; omitted means git's draft for this operation with its comment block stripped
--trailerlist[str]optionaladd a key-value trailer line to the commit message (repeatable)
--discard-unmatched-worktree, --no-discard-unmatched-worktreebooloptionaldestroy working-tree content that matches no side of the conflict. A resolution that writes a stage over the file on disk, or deletes it, is refused when what is there is neither an index stage nor the content git itself wrote -- that is a hand edit, held in no commit, no stage and no stash. Passing this elects the destruction and names each file it takes. Omitted, and with --no-discard-unmatched-worktree, such a path is refused and nothing is committed; resolve it to 'worktree' to commit the edit instead

#Grants

Grants
KindNameReason
proc_mutateparent-bumpconcluding an operation in a submodule moves the parent's gitlink, so safegit commits the parent too when commit.autoBumpParent is on
Search