git remove commit from a merge

2019-07-14 03:15发布

I have the following problem...

I was trying to merge a remote branch into my local, then push the changes to the repo... Ok, I fetched the remote branch which had three commits, but one of them is not finished, so I don't want push one of these commits to the repo... when I run git log, it shows me this:

commit: A1
merge: M1
    merge remote branch "remote/branch"

commit: A2 commit: A3 commit: A4

And I want remove commit A2... how can I do it? I was searching and some people says to use git rebase or git reset, but I'm not sure which one should I use... just in case, I hadn't pushed these changes

Thanks for the help

1条回答
相关推荐>>
2楼-- · 2019-07-14 03:51

If you haven't pushed your merge commit yet (that implies A2 was not pushed yet either) you can rebase interactively:

git rebase -i HEAD~3

Now delete the merge commit line. Then, reorder the commits so that A2 is the latest one done. Once that is complete, branch:

git branch incompleteFeature

Then reset master to the previous commit:

git reset --hard HEAD^

Now you can sync up properly and the incomplete feature will sit in it's own branch until you decide to merge it in later when it's ready.

hope this helps

查看更多
登录 后发表回答