如何从另一个分支中删除不需要的提交以进行 PR

How do I remove unwanted commits form another branch for PR

我做了一件蠢事。我从分支 A 分支出来,在一个新分支上进行更改,将 PR 推送到分支 B(也带来了很多不需要的提交)。

我的问题是我只需要在我进行更改的分支上删除多个提交,但我不知道该怎么做。有很多关于如何摆脱最后一次提交的信息,但就我而言,这正是我想留在分支上的最后一次提交。

您可以从 branchB 创建一个新分支

git checkout branchB
git checkout -b newB

然后从上一个分支中获取您需要的更改(我们在这里称之为 branchFromA

git cherry-pick branchFromA

(最后一个 command 只选择了那个分支的最后一次提交*,就像你想要的那样)

它现在将是一个简单的快进合并到 branchB :

git checkout branchB
git merge newB

或者对于最后一个阶段,因为你似乎使用了 PR,只需将 newB 推送到远程,从 newBbranchB 创建一个新的 PR,最后取消你的branchFromAbranchB PR。


*通常与显式提交引用一起使用,但您可以为其提供分支或标签名称,ref 指向的提交将作为 cherry-pick

的目标