我不小心提交了一个文件local.py
,其中包含密码信息。
我尝试使用filter-branch删除文件,但我被告知该文件不存在。 ls
另有说法。我确信这很简单但有人可以解释原因吗?
这是ls
确认文件存在。
(spsp)user99@jaffa:~/dev/antibes$ ls -l ferrat_project/ferrat_project/settings/local.py
-rw-rw-r-- 1 user99 user99 458 Sep 5 10:44 ferrat_project/ferrat_project/settings/local.py
这里的git filter-branch
失败了,因为找不到文件。
(spsp)user99@jaffa:~/dev/antibes$ git filter-branch --tree-filter 'git rm ferrat_project/ferrat_project/settings/local.py' HEAD
Rewrite 123454323asdj157f2cf6a83e6f2777e85da5b0b (1/52)rm: cannot remove ‘ferrat_project/ferrat_project/settings/local.py’: No such file or directory
tree filter failed: git rm ferrat_project/ferrat_project/settings/local.py
编辑1:回答评论中提出的一些问题。
该错误消息中的修订版本是否存在该文件?
引用的修订版是对存储库的第一次提交。该文件在那时不存在。
您何时添加此文件?
该文件(在第三次提交中)被意外添加到存储库中。存储库中有52个提交。
编辑2:我为回应评论而尝试的东西。 我重新阅读了filter-branch手册页,随后尝试了这个:
user99@jaffa:~/dev/antibes$ git filter-branch --tree-filter 'rm -f ferrat/ferrat/settings/local.py' HEAD
Rewrite 002198729d953ee70a63f2ed68011b3ffb165043 (52/52)
Ref 'refs/heads/master' was rewritten
哪个至少有用,但当然实际上删除了我试图隐藏的文件。我没有太担心这个,因为我在开始之前已经进行了备份,因此我对.gitignore进行了编辑,以阻止local.py重新出现,然后从我的备份中复制local.py并尽可能地...告诉......一切都很好。
我很确定我应该使用'git rm'代替'rm',也许还有其他一些我做错了但这至少看起来有效。