git如何删除历史提交?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git如何删除历史提交?相关的知识,希望对你有一定的参考价值。

我知道一个方法是使用“rebase -i”,但是这有一个严重的问题是——它会衍合所有的后续提交,最后得到的提交历史图形是一条线,而非多条并行的线,而且曾经解决过的冲突还需要再一次解决。
假设:历史从早到晚为“a<-b<-c<-d<-e<-f(另一支为d<-g<-f)”,我希望删掉b得到“a<-c<-d<-e<-f(另一支为d<-g<-f)”,如何做?

你非要保留那次merge并且删掉b而不是revert b么?不要轻易rebase -i历史提交,尤其是本地仓储是从服务器上sync下来的时候,本地的自己开发的还好说。。而且你就算把b删掉,历史也变成了a<-c'<-d'<-e'<-f'(d'<-g'<-f'),commit id都变了的
真要这么搞就用这个,git rebase -p --onto a b

git help rebase里都有
参考技术A GitHub是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,包括Rubinius、Merb和Bitcoin在内的很多知名项目都使用了Git。Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用。 参考技术B Github Git彻底删除历史提交记录的方法
git reset --hard HEAD^
git push --force
参考技术C 我也不清楚的

以上是关于git如何删除历史提交?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除旧的 git 历史记录?

如何删除 Git 仓库中的历史提交记录

git如何删除历史提交?

git删除所有提交历史记录

git删除所有历史提交记录

如何在GIT Rebase Interactive Squash之后删除远程存储库上的历史记录提交消息