ThiefMaster
ThiefMaster

Reputation: 318468

Rebase branch containing a (non-fast-forward) merge

I have a topic branch (new-http-api) in git which is based on a master branch (v0.98-series) that had some stuff integrated.

Now I wanted to rebase my topic branch to get the newly integrated stuff using git rebase v0.98-series. However, this fails with conflicts completely unrelated to the new things. These conflicts occur at a position where I performed a merge with another branch.

I'm now looking for a way to fix this. Losing parts of the history wouldn't be a problem.

The commit history looks like that:

* 163e527 - (HEAD, pub/new-http-api, priv/new-http-api, new-http-api) [FIX] Monkeypatch icalendar to fix rrules in iCal (26 minutes ago) <MYSELF>
* 9392d22 - [IMP] Add iCal export for reservations (87 minutes ago) <MYSELF>
.......................................
* f0af4bb - [REF] Use tuple instead of list for '... in (...)' (7 days ago) <MYSELF>
* b7d5e36 - [IMP] Use HTTP 400 response if limit is too high (7 days ago) <MYSELF>
*   d3a7b57 - [VER] Merge pedro's sorting/limit changes (7 days ago) <MYSELF>
|\
| * a18690b - [IMP] HTTP API - sorting (8 days ago) <SOMEONE_ELSE>
* | ebbe2ca - [REF] Store statuscode in HTTPAPIError exception (7 days ago) <MYSELF>
* | de43588 - [IMP] Improve accesskey/signature and cache system (7 days ago) <MYSELF>
* | f2d6a0a - [IMP] Require HTTPS for authenticated requests (8 days ago) <MYSELF>
* | 69d733f - [IMP] Add request signature validation (8 days ago) <MYSELF>
* | 29e6755 - [FIX] Ignore unknown kwargs in Serializer (8 days ago) <MYSELF>
|/
* db99b6f - [REF] Improve export routing and error handling (8 days ago) <MYSELF>
* 0ad22e1 - [FIX] return proper results (again) (8 days ago) <MYSELF>
......................
* 4846eb3 - [IMP] Fairly functional API version (4 weeks ago) <SOMEONE_ELSE>
* 08ea247 - [FTR] HTTP API - First sketch (4 weeks ago) <SOMEONE_ELSE>

git merge v0.98-series would work fine, but I'd highly prefer to rebase that topic branch.

Upvotes: 0

Views: 543

Answers (2)

karmakaze
karmakaze

Reputation: 36134

Newer version of git allow cherry-picking a range of commits (essentially a rebase). You can pick off the commit ranges before, between, and after the merge onto the head of master.

Upvotes: 1

siride
siride

Reputation: 209445

Take a look at the git rebase --preserve-merges option.

Upvotes: 1

Related Questions