删除旧的提交并仅在远程保留最新的提交

dic*_*cle 3 git github git-bash gitlab

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

pad*_*win 6

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

我还假设您的分支基于父分支(例如master),其中请求合并(通过合并请求)。

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

git rebase --interactive master # change master if it is not your base branch
Run Code Online (Sandbox Code Playgroud)

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

如果您希望提交 1 到 49 消失(包括其内容)并仅保留第 50 个提交),请在运行时在编辑器中git rebase --interactive master删除所有不想保留最后一次提交的行,然后保存并退出。

最后你必须强制更新遥控器:

git push --force
Run Code Online (Sandbox Code Playgroud)

另请阅读INTERACTIVE MODE以下部分:

man git-rebase
Run Code Online (Sandbox Code Playgroud)