我做了一些非常愚蠢的事情。我在代码中输入了一个诅咒字,然后将代码推送到了master分支上。在那之后,我又推了几次,这样人们就不会再拉坏东西了,但是我仍然可以在提交历史中找到诅咒之词。
是否可以从历史记录中删除提交?编辑:我不想将文件添加到gitignore,因为我们需要该文件。
谢谢
一旦推送到存储库,您实际上就不想更改历史记录。但是,如果您完全确定自从您的违犯提交以来没有人从存储库中提取/获取任何东西,则您有2个选择。
[如果您要完全删除提交(以及之后的每个提交),请执行git reset --hard ABC~
(假定提交的哈希为ABC
)。然后执行git push -f
。
[如果您只想编辑该提交,并保留它之后的提交,请执行git rebase -i ABC~
。这将启动您的编辑器,从有问题的提交开始,显示您的提交列表。将标记从“ pick”更改为“ e”,保存文件并关闭编辑器。然后对文件进行必要的更改,并执行git commit -a --amend
,然后执行git rebase --continue
。 [git push -f
]全部跟随。
我想重复一遍,这些选项仅在nobody完成包含有害提交的拉取或提取操作时才可用。如果有,执行这些步骤只会使情况变得更糟。
如果仅在本地PC上(或没有人签出您的更改):
1)使用:
git log
查找要删除的提交。复制哈希(较长的时间:e8348ebe553102018c ...)。
2)使用:
git rebase -i your_commit_hash_code_comes_here〜
只需删除不需要的提交并保存文件。
交互式git rebase还可让您修复损坏的提交-无需删除它。
如果您将更改推送到服务器或某人已经进行了更改-永远不要更改历史记录-这会对您的团队造成严重问题。
[否,Git仅向历史记录添加更改。阅读this文章以了解更多信息。