我在代码中输入了一个密码,然后把代码推到主分支上。在那之后我又推了几次,这样人们就不会拉坏东西了,但是我仍然可以在提交历史中找到关键词。
我不想将该文件添加到 .gitignore,因为我们需要该文件。
.gitignore
有办法从历史中删除提交吗?
一旦你开始回购,你就不会想要改变历史了。然而,如果你是绝对的 当然,自从你犯错提交以来没有人从回购中提取,你有两个选择。
如果您希望完全删除“ bad”提交(以及之后的每个提交) ,那么执行 git reset --hard ABC(假设 ABC是“ bad”提交的兄弟提交的散列值——您希望将其视为该分支的新头提交的散列值)。然后做一个 git push --force(或 git push -f)。
git reset --hard ABC
ABC
git push --force
git push -f
如果您只是想编辑该提交,并保留之后的提交,那么执行 git rebase -i ABC~。这将启动您的编辑器,显示您的提交列表,从违规的那个开始。将标志从“ pick”更改为“ e”,保存文件并关闭编辑器。然后对文件进行必要的更改,并执行 git commit -a --amend,然后执行 git rebase --continue。接下来是 git push -f。
git rebase -i ABC~
git commit -a --amend
git rebase --continue
我想重复一遍,这些选项只有在 没人已经完成包含您的违规提交的拉取操作时才可用。如果他们这样做了,那么采取这些措施只会让事情变得更糟。
如果它只在你的本地电脑上(或者没有人检查你的修改) :
git log
复制 hash (长序列,如: e8348ebe553102018c...)。
git rebase -i [hash]~ : for example git rebase -i e8348~
只需删除不需要的提交并保存文件。
交互式 git rebase 还可以让您修复破碎的提交——没有必要删除它。
如果您将更改推送到服务器,或者有人已经得到了您的更改——永远不要更改历史记录——这将给您的团队带来严重的问题。
这对我有用:
git rebase -i <commit_hash>~
pick
drop
我最近和一个团队一起工作,发现 Git 有解决这个问题的方法
都在这个链接上
Https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository
使用 git-filter-repo 和 BFG Repo-Cleaner
git-filter-repo
BFG Repo-Cleaner
这里有一个很酷的视频
Https://www.youtube.com/watch?v=z8tioyg_oho