]> asedeno.scripts.mit.edu Git - git.git/blobdiff - git-rebase--interactive.sh
rebase -i -p: handle index and workdir correctly
[git.git] / git-rebase--interactive.sh
index 4e334ba41dad3067394b79c15ebfe610b2d3e178..58126bd80cd73993c6cedd548e200c0fa461a8af 100755 (executable)
@@ -145,7 +145,16 @@ pick_one () {
 }
 
 pick_one_preserving_merges () {
-       case "$1" in -n) sha1=$2 ;; *) sha1=$1 ;; esac
+       fast_forward=t
+       case "$1" in
+       -n)
+               fast_forward=f
+               sha1=$2
+               ;;
+       *)
+               sha1=$1
+               ;;
+       esac
        sha1=$(git rev-parse $sha1)
 
        if test -f "$DOTEST"/current-commit
@@ -157,7 +166,6 @@ pick_one_preserving_merges () {
        fi
 
        # rewrite parents; if none were rewritten, we can fast-forward.
-       fast_forward=t
        preserve=t
        new_parents=
        for p in $(git rev-list --parents -1 $sha1 | cut -d' ' -f2-)
@@ -182,6 +190,8 @@ pick_one_preserving_merges () {
        t)
                output warn "Fast forward to $sha1"
                test $preserve = f || echo $sha1 > "$REWRITTEN"/$sha1
+               output git reset --hard $sha1 ||
+                       die "Cannot fast forward to $sha1"
                ;;
        f)
                test "a$1" = a-n && die "Refusing to squash a merge: $sha1"