我想从我的回购记录中删除很多提交。通过删除,我的意思是我希望它们从我在GitLab上的远程存储库中完全消失。纯粹而简单。没有历史,没有踪迹。 我知道不建议这样做,但是它们是重复的,并且包含敏感信息。
我有一个这样的SHA-1列表:
3816b7652c4147216293d1fac3dee2f377417979
0f0a95f4d15a2a8d176f548bde47259956cbb859
90cd0dc615d6928460861da70f024039ce18e06f
f8a371aff5301c69825dbd6aec7898fb2c122a79
619dd79966ef4636134bc55f1ef3f03f94cb9dd4
a556b303021c2da0094d42605ce426ef9e74a765
.
.
.
它们是我想要消失的提交。它们可以在master
分支或其他分支上。
git rebase -i <SHA>^
可能是一个很好的工具,我真的不介意手动查找与列表匹配的行。但是,当我保存git-rebase-todo
文件时,出现合并错误。我不想被那些打扰,我只想删除这些提交,就好像它们根本不存在一样。就是这样。
答案 0 :(得分:2)
您需要以下各项的组合:
git replace
替换其父项的提交(如果父项不属于您的列表),as seen here; git filter branch
以使该替换永久化(顺便更改过程中其余所有提交的sha1)需要编写脚本,因为这不是Git的本机功能。