I have some commits that I don't want in my project, but there's a commit based on them which I do want in it. This is my GitHub "Network" graph of the repository (ASCII, as I still cannot post images):
[]--[]--[_]
| |
| ------->|
---------->[·]--[·]--[*]
(-> means a merge)
I want to delete the changes made in the two [·] commits, and base the [*] one on the [_] one above. I've tryed merging and rebasing, but they apply the changes of the unwanted commits. Is it possible?
Sorry if I'm not clear, English isn't my mother language. Thanks in advance.
I can give you two options:
Interactive rebase (git rebase -i
) presents you a list of commits, editing this list will change the result of the operation; lets you reorder, delete or tag these commits for miscellaneous operations. In your case, you can rebase [*]
's branch into [_]
's and delete the lines unwanted commits.
Cherrypick lets you apply the changes of a single commit into another branch. In your case, you can simply cherrypick commit [*]
into [_]
's branch.
You could check out your _
and cherry pick the *
. If you want that on a separate branch, you can branch off from _
before doing this.
You can combine your commits by rebase and squashing the ones you dont need. May be you did not do squash and pick.
Refere this: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With