bin/git-histedit

changeset 755
60ee3259bc01
child 759
656f6f6f63cf
equal deleted inserted replaced
754:0b6dae901ee5 755:60ee3259bc01
1 #!/bin/sh
2 set -eu
3
4 case ${1:-} in *help|-h)
5 exec perldoc -T $0;;
6 esac
7
8 UPSTREAM="${1:-@{u\}}"
9 BRANCH="${2:-$(git symbolic-ref --short -q HEAD || echo HEAD)}"
10
11 [ "$#" -ne 0 ] && shift
12 [ "$#" -ne 0 ] && shift
13
14 if git merge-base --is-ancestor "$UPSTREAM" "$BRANCH"; then
15 BASE=$(git rev-parse "$UPSTREAM")
16 else
17 BASE=$(git merge-base "$UPSTREAM" "$BRANCH")
18 fi
19
20 exec git rebase --interactive --autosquash "$BASE" "$BRANCH" "$@"
21
22 :<<=cut
23 =head1 NAME
24
25 git histedit
26
27 =head1 SYNOPSIS
28
29 $ git histedit
30
31 =head1 DESCRIPTION
32
33 C<histedit> lets you edit a branch using interactive rebase, but without
34 actually I<moving> the fork point of your branch, avoiding the complications of
35 fixing up your history and dealing with merge conflicts at the same time.
36
37 See also: C<hg histedit>
38
39 =cut

mercurial