删除旧的提交并只保留最新的提交在 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
认为我在远程有 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