Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I skip commits in git?

Tags:

git

git-commit

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.

like image 890
vguzmanp Avatar asked Apr 12 '12 17:04

vguzmanp


3 Answers

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.

like image 168
KurzedMetal Avatar answered Nov 20 '22 05:11

KurzedMetal


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.

like image 33
vhallac Avatar answered Nov 20 '22 05:11

vhallac


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

like image 1
Yogesh Avatar answered Nov 20 '22 04:11

Yogesh