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

Leo*_*cht 2 git branch commit revert

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

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

Cod*_*ard 5

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

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

git cherry-pick <SHA-1>...<SHA-1>
Run Code Online (Sandbox Code Playgroud)

git checkout --orphan

创建一个新的孤立分支,命名为 ,从它开始并切换到它。在这个新分支上进行的第一次提交将没有父级,它将成为与所有其他分支和提交完全断开的新历史的根。


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

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

在 master 分支的尖端应用由提交引入的更改,并使用此更改创建一个新的提交。

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

在此处输入图片说明


阅读您可以使用的所有选项的完整git cherry-pick文档

  • 您可以选择从哪一个开始并提供一个范围。例如:`gitcherry-pick 159...1`如果您想要 160,请使用:`gitcherry-pick 160...1` (2认同)