Dmitry Potapov <dpotapov@xxxxxxxxx> writes: > If git rebase interactive is stopped by "edit" command and then the user > said "git rebase --continue" while having some stage changes, git rebase > interactive is trying to amend the last commit by doing: > git --soft reset && git commit > > However, the user can abort commit for some reason by providing an empty > log message, and that would leave the last commit undone, while the user > being completely unaware about what happened. Now if the user tries to > continue, by issuing "git rebase --continue" that squashes two previous > commits. > > Signed-off-by: Dmitry Potapov <dpotapov@xxxxxxxxx> > --- > git-rebase--interactive.sh | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh > index 929d681..5b2b1e5 100755 > --- a/git-rebase--interactive.sh > +++ b/git-rebase--interactive.sh > @@ -429,12 +429,15 @@ do > die "Cannot find the author identity" > if test -f "$DOTEST"/amend > then > + amend=$(git rev-parse --verify HEAD) > git reset --soft HEAD^ || > die "Cannot rewind the HEAD" > fi > export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE && > - git commit --no-verify -F "$DOTEST"/message -e || > - die "Could not commit staged changes." > + git commit --no-verify -F "$DOTEST"/message -e || { > + test -n "$amend" && git reset --soft $amend > + die "Could not commit staged changes." > + } > fi Feels obviously correct from a cursory look, although I admit I haven't thought about other possible corner cases that this additional reset may fire when it shouldn't. Dscho? > > require_clean_work_tree > -- > 1.6.0 > > -- > To unsubscribe from this list: send the line "unsubscribe git" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html