如何从分支中删除除最后一个 x 之外的所有提交?

How can I remove all commits except the last x from a branch?

我需要找到一种方法来使用 Git 从分支中删除除最后(最近)159 以外的所有提交。我也很乐意创建一个新分支并将最后 159 个分支移入其中,如果这对您来说似乎是更好的方法。

有什么想法吗?我已经尝试过 this 但它似乎只允许我恢复到某个提交(这不是我想要的)。

最简单的方法是创建一个孤立分支,然后选择提交范围到新分支。

# create orphan branch 
git checkout --orphan <branch>

git cherry-pick <SHA-1>...<SHA-1>

git checkout --orphan

Create a new orphan branch, named , started from and switch to it. The first commit made on this new branch will have no parents and it will be the root of a new history totally disconnected from all the other branches and commits.


如何将所需的提交添加到不同的分支中。

git cherry-pick <SHA-1>...<SHA-1>

Apply the change introduced by the commit at the tip of the master branch and create a new commit(s) with this change.

... 的语法是一个提交范围。抓取从开始(排除)到最后一个的所有提交。


读出全文git cherry-pick documentation for all the options you can use