Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git rebase commit selection

Tags:

git

I have a git tree that looks like the following:

enter image description here

Because of the review tool we use, we cherry pick changes in rather than merging them. This leaves us with some logical duplicates, whose branch I then just delete. For example, the change one below ssl_tests "Modification: Changing name..." can also be seen in dev.

Now, perhaps this is a lack of understanding on my part of cherry pick, but those commits have different hashes and so are different commits right? Even though they are logically the same.

However, when I go to rebase ssl_tests onto dev, git manages to figure out that those cherry picked commits are upstream and then only rebases the "New Feature: Unit tests..." commit from ssl_tests.

As per usual, with git, this is great! This is exactly what I want! My question though, is how does git figure out that it doesn't need to rebase the other commits if they have different hashes?

Thanks! Stephen

like image 700
steprobe Avatar asked Nov 24 '11 09:11

steprobe


1 Answers

Git is looking at more than just the SHA1 here. It's actually considering the contents of the commit. It sees that the trees resulting from applying the commit and not applying the commit are the same; that is, the commit would be empty if applied to the new base. Thus, rebase is smart enough to know that it needn't bother including those commits.

like image 169
Nick Lewis Avatar answered Oct 13 '22 10:10

Nick Lewis