hakunin
hakunin

Reputation: 4231

How to undo git flow feature finish?

I am learning git-flow and I just did git flow feature finish <feature-name>, which merged my feature branch to develop and removed it.

Instead of this, I want to push the feature branch to github, so I can merge it after a peer review.

So the question is, how do I 'undo' this command. Or in other words , how can I move my last two commits from develop to my feature branch?

Upvotes: 44

Views: 21007

Answers (2)

Joshua Goldberg
Joshua Goldberg

Reputation: 5333

I found it easiest to just update master (we call it default) back to origin, with either

git checkout -B master origin/master

or the equivalent newer command

git switch -C master origin/master

checkout -B and switch -C (or --force-create) both move the branch to the new location if it already exists.

Update After thinking about it later, I half-considered deleting this, though it worked for me, because I suspect it might only work for the fast-forward case, rather than a regular merge. That also might explain why git reset --hard <SHA-from-reflog> didn't work for me and got me into a confused state, i.e., because I "reset" my local master rather than the feature branch head.

Upvotes: 0

Peter van der Does
Peter van der Does

Reputation: 14468

These steps should do the trick:

Get the sha's needed:

git log

<sha1> is the commit right before the merge
<sha2> is the last commit on develop before you started working on the feature

git checkout develop
git checkout -b feature/<feature-name>
git reset <sha1> --hard
git checkout develop
git reset <sha2> --hard

Push your feature branch.

Upvotes: 83

Related Questions