删除旧的提交并只保留最新的提交在 REMOTE 上

Remove old commits and just keep latest commit on REMOTE

认为我在远程有 50 个提交,在创建合并请求之前我想删除所有 49 个并只保留我推送的最后一个。
有办法吗?

我猜这 50 次提交在你的分支中。

我还假设你的分支是基于一个父分支(例如master),它被请求合并(与合并请求)。

如果是这样,并且您希望这 50 次提交成为一个,您可以这样做:

git rebase --interactive master # change master if it is not your base branch

在将打开的编辑器中,将提交 2 到 50 标记为 squash 而不是 pick,保存并退出,更新提交消息以包含您想要的那个,以及您的提交将全部压缩为一个。

如果你想让提交 1 到 49 消失(包括它们的内容)并且只保留第 50 个),在 运行 git rebase --interactive master 时在编辑器中删除所有你不想要的行只想保留最后一次提交,然后保存并退出。

最后你必须用力更新遥控器:

git push --force

另请阅读INTERACTIVE MODE部分:

man git-rebase