rebase: use @{upstream} if no upstream specified
'git rebase' without arguments is currently not supported. Make it default to 'git rebase @{upstream}'. That is also what 'git pull [--rebase]' defaults to, so it only makes sense that 'git rebase' defaults to the same thing. Defaulting to @{upstream} will make it possible to run e.g. 'git rebase -i' without arguments, which is probably a quite common use case. It also improves the scenario where you have multiple branches that rebase against a remote-tracking branch, where you currently have to choose between the extra network delay of 'git pull' or the slightly awkward keys to enter 'git rebase @{u}'. The error reporting when no upstream is configured for the current branch or when no branch is checked out is reused from git-pull.sh. A function is extracted into git-parse-remote.sh for this purpose. Helped-by: Yann Dirson <ydirson@altern.org> Helped-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c71f8f3d50
commit
15a147e618
32
git-pull.sh
32
git-pull.sh
@ -163,34 +163,10 @@ error_on_no_merge_candidates () {
|
||||
echo "You asked to pull from the remote '$1', but did not specify"
|
||||
echo "a branch. Because this is not the default configured remote"
|
||||
echo "for your current branch, you must specify a branch on the command line."
|
||||
elif [ -z "$curr_branch" ]; then
|
||||
echo "You are not currently on a branch, so I cannot use any"
|
||||
echo "'branch.<branchname>.merge' in your configuration file."
|
||||
echo "Please specify which remote branch you want to use on the command"
|
||||
echo "line and try again (e.g. 'git pull <repository> <refspec>')."
|
||||
echo "See git-pull(1) for details."
|
||||
elif [ -z "$upstream" ]; then
|
||||
echo "You asked me to pull without telling me which branch you"
|
||||
echo "want to $op_type $op_prep, and 'branch.${curr_branch}.merge' in"
|
||||
echo "your configuration file does not tell me, either. Please"
|
||||
echo "specify which branch you want to use on the command line and"
|
||||
echo "try again (e.g. 'git pull <repository> <refspec>')."
|
||||
echo "See git-pull(1) for details."
|
||||
echo
|
||||
echo "If you often $op_type $op_prep the same branch, you may want to"
|
||||
echo "use something like the following in your configuration file:"
|
||||
echo
|
||||
echo " [branch \"${curr_branch}\"]"
|
||||
echo " remote = <nickname>"
|
||||
echo " merge = <remote-ref>"
|
||||
test rebase = "$op_type" &&
|
||||
echo " rebase = true"
|
||||
echo
|
||||
echo " [remote \"<nickname>\"]"
|
||||
echo " url = <url>"
|
||||
echo " fetch = <refspec>"
|
||||
echo
|
||||
echo "See git-config(1) for details."
|
||||
elif [ -z "$curr_branch" -o -z "$upstream" ]; then
|
||||
. git-parse-remote
|
||||
error_on_missing_default_upstream "pull" $op_type $op_prep \
|
||||
"git pull <repository> <refspec>"
|
||||
else
|
||||
echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
|
||||
echo "from the remote, but no such ref was fetched."
|
||||
|
Reference in New Issue
Block a user