Rebase including reverted commit

git rebase git-rebase git-revert

334 观看

1回复

20199 作者的声誉

I want to merge my feature branch onto the develop branch. However, one of the commits reverted a commit that I now want.

* develop - merge revert PR
|\
| * Revert undesired merge
|/
* Merge (undesired)
|\
| * commit A
|/
|
... (lots of commits)
|
| * feature - commit B
| * commit A'
|/
*

git rebase -i develop does not show commit A'. I've tried various options (-p, --keep-empty, -f) without success.

How can I end up with

  * feature - commit B
  * commit A'
 /
* develop - merge revert PR

without individually cherry-picking? (There are more than just two commits - this example is simplified.)

(Note: The most recent commits are at the top in the diagrams. Also note that A and A' have the same contents; that is, they apply the same changes.)

作者: TrueWill 的来源 发布者: 2017 年 12 月 27 日

回应 1


2

57675 作者的声誉

决定

You need to help rebase figure out its to-do list from a point in time where "commit A" hasn't been merged yet.

Instead of git rebase -i develop, try:

git rebase -i undesired~ --onto develop

...where undesired is either a branch at or the SHA of the reverted merge commit.

Another option would be:

git rebase -i HEAD~2 --onto develop

...meaning "rebase the last two commits onto develop".

作者: dahlbyk 发布者: 2017 年 12 月 27 日
32x32