Git - 删除和排除配置文件

And*_*sov 8 git version-control configuration-management

2个星期前,我提交了我的应用程序的配置,它有我的密码,它不是很有用.如何从提交历史记录中删除该文件并确保它不会重新提交?

我想从所有提交树中删除该文件,因为它包含我的密码.

Von*_*onC 19

您可以

git rm myConfigFile
echo myConfigFile > .gitignore
git add .gitignore
git commit -m "from now on, no more myConfigFile"
Run Code Online (Sandbox Code Playgroud)

另一种极端方法(危险,特别是如果你已经将你的仓库推到远程仓库)将完全从所述仓库的历史中删除该文件:

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD
Run Code Online (Sandbox Code Playgroud)

(谨慎使用,先备份)

如何从git的历史记录中删除敏感文件的问题在该敏感主题有更多.

这个过程的问题有两个:

  1. 如果您的回购已经被克隆,您永远不能保证机密信息将从其他所有回购中"消失".
  2. 当其他人尝试在此之后下拉您的最新更改时,他们会收到一条消息,指示无法应用更改,因为它不是快进.
    要解决此问题,他们必须删除现有存储库并重新克隆它,或者按照联机帮助页中 " RECOVERING FROM UPSTREAM REBASE" 下的说明进行操作. 在这两种情况下,您的机密信息都不会被"安静地"替换或删除......git-rebase