Merge branch 'jc/rebase-orig-head'
* jc/rebase-orig-head: Documentation: mention ORIG_HEAD in am, merge, and rebase Teach "am" and "rebase" to mark the original position with ORIG_HEAD
This commit is contained in:
@ -145,6 +145,12 @@ directory exists, so if you decide to start over from scratch,
|
|||||||
run `rm -f -r .dotest` before running the command with mailbox
|
run `rm -f -r .dotest` before running the command with mailbox
|
||||||
names.
|
names.
|
||||||
|
|
||||||
|
Before any patches are applied, ORIG_HEAD is set to the tip of the
|
||||||
|
current branch. This is useful if you have problems with multiple
|
||||||
|
commits, like running 'git am' on the wrong branch or an error in the
|
||||||
|
commits that is more easily fixed by changing the mailbox (e.g.
|
||||||
|
errors in the "From:" lines).
|
||||||
|
|
||||||
|
|
||||||
SEE ALSO
|
SEE ALSO
|
||||||
--------
|
--------
|
||||||
|
@ -81,7 +81,9 @@ Otherwise, merge will refuse to do any harm to your repository
|
|||||||
(that is, it may fetch the objects from remote, and it may even
|
(that is, it may fetch the objects from remote, and it may even
|
||||||
update the local branch used to keep track of the remote branch
|
update the local branch used to keep track of the remote branch
|
||||||
with `git pull remote rbranch:lbranch`, but your working tree,
|
with `git pull remote rbranch:lbranch`, but your working tree,
|
||||||
`.git/HEAD` pointer and index file are left intact).
|
`.git/HEAD` pointer and index file are left intact). In addition,
|
||||||
|
merge always sets `.git/ORIG_HEAD` to the original state of HEAD so
|
||||||
|
a problematic merge can be removed by using `git reset ORIG_HEAD`.
|
||||||
|
|
||||||
You may have local modifications in the working tree files. In
|
You may have local modifications in the working tree files. In
|
||||||
other words, 'git-diff' is allowed to report changes.
|
other words, 'git-diff' is allowed to report changes.
|
||||||
|
@ -26,7 +26,8 @@ of commits that would be shown by `git log <upstream>..HEAD`.
|
|||||||
|
|
||||||
The current branch is reset to <upstream>, or <newbase> if the
|
The current branch is reset to <upstream>, or <newbase> if the
|
||||||
--onto option was supplied. This has the exact same effect as
|
--onto option was supplied. This has the exact same effect as
|
||||||
`git reset --hard <upstream>` (or <newbase>).
|
`git reset --hard <upstream>` (or <newbase>). ORIG_HEAD is set
|
||||||
|
to point at the tip of the branch before the reset.
|
||||||
|
|
||||||
The commits that were previously saved into the temporary area are
|
The commits that were previously saved into the temporary area are
|
||||||
then reapplied to the current branch, one by one, in order. Note that
|
then reapplied to the current branch, one by one, in order. Note that
|
||||||
|
@ -242,6 +242,7 @@ else
|
|||||||
: >"$dotest/rebasing"
|
: >"$dotest/rebasing"
|
||||||
else
|
else
|
||||||
: >"$dotest/applying"
|
: >"$dotest/applying"
|
||||||
|
git update-ref ORIG_HEAD HEAD
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -574,6 +574,7 @@ EOF
|
|||||||
has_action "$TODO" ||
|
has_action "$TODO" ||
|
||||||
die_abort "Nothing to do"
|
die_abort "Nothing to do"
|
||||||
|
|
||||||
|
git update-ref ORIG_HEAD $HEAD
|
||||||
output git checkout $ONTO && do_rest
|
output git checkout $ONTO && do_rest
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -378,7 +378,7 @@ fi
|
|||||||
echo "First, rewinding head to replay your work on top of it..."
|
echo "First, rewinding head to replay your work on top of it..."
|
||||||
git checkout "$onto^0" >/dev/null 2>&1 ||
|
git checkout "$onto^0" >/dev/null 2>&1 ||
|
||||||
die "could not detach HEAD"
|
die "could not detach HEAD"
|
||||||
# git reset --hard "$onto^0"
|
git update-ref ORIG_HEAD $branch
|
||||||
|
|
||||||
# If the $onto is a proper descendant of the tip of the branch, then
|
# If the $onto is a proper descendant of the tip of the branch, then
|
||||||
# we just fast forwarded.
|
# we just fast forwarded.
|
||||||
|
Reference in New Issue
Block a user