Git cherry pick creates duplicate commits

 ̄綄美尐妖づ 提交于 2021-02-18 07:57:31

问题


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.


回答1:


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"
  • "using git rebase to remove duplicate cherry-picked commits"


来源:https://stackoverflow.com/questions/43084192/git-cherry-pick-creates-duplicate-commits

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!