After cherry-picking some commits from one branch to another branch, i still see commits when a pull request is created later.
Say for example, There is a git project which has two branches : Dev , Release.
And commit history is in following order.
DEV : a1, a2, a3, a4, a5, a6
RELEASE : a1, a2
Now if i cherry-picked commits a3 and a5 alone from Dev to Release. Now the commit history will be as shown below. cherry-picked commits will have new SHA (b1 & b2).
RELEASE : a1, a2, b1, b2.
Later if i try to create a pull request from Dev to Release branch, i stil see the commits a3 and a5.
But in this case how can i find difference in commits between these two branches?
I saw some articles stating 'rebase' but not able to understand the logic behind it.
The reason why you should use cherry-pick rarely is that it easily creates "duplicate" commits: when you integrate a commit into your HEAD branch using cherry-pick, Git has to create a new commit with the exact same contents. It is, however, a completely new commit object with its own, new SHA identifier.
Cherry-picking works by figuring out the patch—that is, the changes—introduced by a given commit and then applying that patch to the current branch. That might result in conflicts if the commit you decided to cherry-pick builds on changes introduced by an earlier commit you didn't cherry-pick.
One possible way to avoid these cherry-pick conflicts is by doing the cherry-picking in the order of oldest commit to latest commit, i.e. based on commit date.
Ideally, you rebase dev on top on the updated release first.
git checkout dev
git rebase release
The logic behind that is that Git should detect that a3 and a5 are the same as b1 and b2: meaning a3 and a5 won't be replayed at all.
The new dev branch (from which you will create a PR) won't have a3 and a5 anymore.
See also:
git merge
after git cherry-pick
: avoiding duplicate commits"git rebase
to remove duplicate cherry-picked commits"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