我做了一件非常愚蠢的事。我在代码中输入了一个curseword,然后将代码推送到master分支上。之后我又推了几次,所以人们不会把坏事拉下来,但我仍然可以在提交历史中找到诅咒词。
有没有办法从历史记录中删除提交?编辑:我不想将文件添加到gitignore,因为我们需要该文件。
由于
答案 0 :(得分:19)
这对我有用:
git log
找到要删除的提交并复制其哈希值git rebase -i <commit_hash>~
将打开您的文本编辑器pick
切换到drop
进行特定的提交答案 1 :(得分:16)
一旦你推动回购,你真的不想改变历史。但是,如果您绝对确定,自您的违规提交以来没有人从回购中提取/取出,您有2个选项。
如果要完全删除提交(以及之后的每个提交),请执行git reset --hard ABC~
(假设提交的哈希是ABC
)。然后做一个git push -f
。
如果您只想编辑该提交,并保留其后的提交,请执行git rebase -i ABC~
。这将启动您的编辑器,显示您的提交列表,从违规提示开始。从&#34;选择&#34;更改标志到&#34; e&#34;,保存文件并关闭编辑器。然后对文件进行必要的更改,然后执行git commit -a --amend
,然后执行git rebase --continue
。全部使用git push -f
。
我想再说一遍,如果 nobody 执行了包含违规提交的提取或提取,则这些选项仅适用于您。如果他们有,那么做这些步骤只会让事情变得更糟。
答案 2 :(得分:3)
如果它仅在您的本地PC上(或没有人检查您的更改):
1)使用:
git log
找到要删除的提交。复制哈希(long sqeuence,如:e8348ebe553102018c ......)。
2)使用:
git rebase -i your_commit_hash_code_comes_here
只需删除您不需要的提交并保存文件。
交互式git rebase可以让你修复破坏的提交 - 无需删除它。
如果您将更改推送到服务器或某人已经进行了更改 - 从不更改历史记录 - 则会给您的团队带来严重问题。
答案 3 :(得分:-2)
不,Git只会添加对历史记录的更改。 有关详情,请参阅this文章。