Git 樱桃选择创建重复提交

Sri*_*Sri 4 git github git-cherry-pick

在从一个分支到另一个分支挑选一些提交之后,我仍然会在稍后创建拉取请求时看到提交。

比如说,有一个 git 项目,它有两个分支: Dev , Release 。

并且提交历史按以下顺序排列。

DEV : a1, a2, a3, a4, a5, a6

释放:a1,a2

现在,如果我单独从 Dev 到 Release 挑选提交 a3 和 a5。现在提交历史将如下所示。精选的提交将具有新的 SHA(b1 和 b2)。

释放:a1、a2、b1、b2。

稍后,如果我尝试创建从 Dev 到 Release 分支的拉取请求,我仍然会看到提交 a3 和 a5。

但是在这种情况下,我如何才能找到这两个分支之间提交的差异?

我看到一些文章说“rebase”,但无法理解其背后的逻辑。

Von*_*onC 5

理想情况下,您首先在更新版本的基础上重新构建 dev。

git checkout dev
git rebase release
Run Code Online (Sandbox Code Playgroud)

这背后的逻辑是 Git 应该检测到 a3 和 a5 与 b1 和 b2 相同:这意味着根本不会重放 a3 和 a5。
新的 dev 分支(您将从中创建 PR)将不再有 a3 和 a5。

也可以看看: