aboutsummaryrefslogtreecommitdiff
path: root/git-rebase.sh
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2007-03-22 02:54:59 -0700
committerJunio C Hamano <junkio@cox.net>2007-03-22 02:56:53 -0700
commita1bf91e081de236af34bf8acd484881ce146fc93 (patch)
tree3a4d17c1ddca4bf1c3c63f048d1f54cbbc5e1d6f /git-rebase.sh
parent1d848f643cd8ba86044d729d08d6866425c1539e (diff)
downloadgit-a1bf91e081de236af34bf8acd484881ce146fc93.tar.gz
git-a1bf91e081de236af34bf8acd484881ce146fc93.tar.xz
git-rebase: make 'rebase HEAD branch' work as expected.
When you want to amend the commit message of 3 commits before the tip of the current branch, say 'master', A--B--C--D--E(master) it is sometimes handy to make your head detached at that commit with: $ git checkout HEAD~3 ;# check out B $ git commit --amend ;# without modifying contents... to create: .B'(HEAD) / A--B--C--D--E(master) and then rebase 'master' branch onto HEAD with this: $ git rebase HEAD master to result in: .B'-C'-D'-E(master=HEAD) / A--B--C--D--E However, the current code interprets HEAD after it switches to the branch 'master', which means the rebase will not do anything. You have to say something unwieldly like this instead: $ git rebase $(git rev-parse HEAD) master This fixes it by expanding the $onto commit name before switching to the target branch. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'git-rebase.sh')
-rwxr-xr-xgit-rebase.sh8
1 files changed, 4 insertions, 4 deletions
diff --git a/git-rebase.sh b/git-rebase.sh
index b51d19d12..aadd580f8 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -265,6 +265,10 @@ upstream_name="$1"
upstream=`git rev-parse --verify "${upstream_name}^0"` ||
die "invalid upstream $upstream_name"
+# Make sure the branch to rebase onto is valid.
+onto_name=${newbase-"$upstream_name"}
+onto=$(git-rev-parse --verify "${onto_name}^0") || exit
+
# If a hook exists, give it a chance to interrupt
if test -x "$GIT_DIR/hooks/pre-rebase"
then
@@ -291,10 +295,6 @@ case "$#" in
esac
branch=$(git-rev-parse --verify "${branch_name}^0") || exit
-# Make sure the branch to rebase onto is valid.
-onto_name=${newbase-"$upstream_name"}
-onto=$(git-rev-parse --verify "${onto_name}^0") || exit
-
# Now we are rebasing commits $upstream..$branch on top of $onto
# Check if we are already based on $onto, but this should be