File tree Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Original file line number Diff line number Diff line change @@ -124,10 +124,18 @@ test true = "$rebase" && {
124
124
git diff-index --ignore-submodules --cached --quiet HEAD -- ||
125
125
die " refusing to pull with rebase: your working tree is not up-to-date"
126
126
127
+ oldremoteref= &&
127
128
. git-parse-remote &&
128
- reflist=" $( get_remote_merge_branch " $@ " 2> /dev/null) " &&
129
- oldremoteref=" $( git rev-parse -q --verify \
130
- " $reflist " ) "
129
+ remoteref=" $( get_remote_merge_branch " $@ " 2> /dev/null) " &&
130
+ oldremoteref=" $( git rev-parse -q --verify " $remoteref " ) " &&
131
+ for reflog in $( git rev-list -g $remoteref 2> /dev/null)
132
+ do
133
+ if test " $reflog " = " $( git merge-base $reflog $curr_branch ) "
134
+ then
135
+ oldremoteref=" $reflog "
136
+ break
137
+ fi
138
+ done
131
139
}
132
140
orig_head=$( git rev-parse -q --verify HEAD)
133
141
git fetch $verbosity --update-head-ok " $@ " || exit 1
Original file line number Diff line number Diff line change @@ -117,6 +117,19 @@ test_expect_success '--rebase with rebased default upstream' '
117
117
118
118
'
119
119
120
+ test_expect_success ' rebased upstream + fetch + pull --rebase' '
121
+
122
+ git update-ref refs/remotes/me/copy copy-orig &&
123
+ git reset --hard to-rebase-orig &&
124
+ git checkout --track -b to-rebase3 me/copy &&
125
+ git reset --hard to-rebase-orig &&
126
+ git fetch &&
127
+ git pull --rebase &&
128
+ test "conflicting modification" = "$(cat file)" &&
129
+ test file = "$(cat file2)"
130
+
131
+ '
132
+
120
133
test_expect_success ' pull --rebase dies early with dirty working directory' '
121
134
122
135
git checkout to-rebase &&
You can’t perform that action at this time.
0 commit comments