删除旧的提交记录,仅保留远程仓库上最新的提交记录。

3

假设我在远程仓库上有50个提交记录,但在创建合并请求之前,我想删除其中的49个,只保留我最后一次推送的那一个。
有没有办法实现这个需求?


1
你想摆脱所有其他的更改,还是只想要一个包含所有更改的提交? - undefined
我想从远程仓库中删除所有的49个旧提交,而不是在本地删除,并且只保留最新推送的提交。@crashmstr - undefined
2个回答

6

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

我还假设你的分支基于一个父分支(例如master),并且要求将其与合并请求一起合并。

如果是这样,并且你想让这50次提交成为一个,你可以执行以下操作:

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

在即将打开的编辑器中,将提交2到50标记为(压缩)而不是(选择),保存并退出,更新提交消息以获得所需的消息,您的提交将被压缩成一个。
如果您想要让提交1到49消失(包括其内容)并仅保留第50个提交,则在运行git rebase --interactive master时,在编辑器中删除所有不想保留的行,只保留最后一个提交,然后保存并退出。
最后,您必须强制推送以更新远程内容:
git push --force

请同时阅读以下 交互模式 部分:

man git-rebase

只是出于好奇和额外的信息,你是想要“压缩”或者删除这些提交吗? - undefined
是的,我想要在一个分支中移除提交记录,而不是主分支(master branch)。 - undefined
Git命令是我在软件界见过的一些最蠢、最烦人的胡言乱语。 - undefined

0
如果你真的想要销毁所有历史记录并保留最新的版本,只需删除.git文件夹并重新开始。
rm -rf .git
git init
git add .
git commit -am "first commit"

当然,您需要重新添加子模块、git配置或者之前git文件夹中存在的任何钩子。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接