8

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

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

4

4 回答 4

19

你可以

git rm myConfigFile
echo myConfigFile > .gitignore
git add .gitignore
git commit -m "from now on, no more myConfigFile"

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

git filter-branch --index-filter 'git update-index --remove myConfigFile' HEAD

(小心使用,并先备份)

问题如何从 git 的历史记录中删除敏感文件有更多关于该敏感主题的内容。

这个过程的问题是双重的:

  1. 如果您的 repo 已经被克隆,您永远无法保证机密信息真的会从其他所有 repo 中“消失”。
  2. 当其他人在此之后尝试下拉您的最新更改时,他们会收到一条消息,指示无法应用更改,因为它不是快进。
    要解决此问题,他们必须删除现有存储库并重新克隆它,或者按照手册页RECOVERING FROM UPSTREAM REBASE中“ ”下的说明进行操作。 在这两种情况下,您的机密信息都不会被“悄悄地”替换或删除……git-rebase
于 2009-12-07T19:19:36.540 回答
1
cp my-config config.tmp
git rm my-config
git commit -m 'removed config'
mv config.tmp my-config
echo my-config >> .gitignore
git add .gitignore
git commit -m 'ignore config'
于 2009-12-07T19:19:56.773 回答
0

使用忽略:http: //github.com/guides/ignore-for-git

于 2009-12-07T19:18:40.130 回答
0

将文件名添加到 .gitignore 文件。

关联

于 2009-12-07T19:19:02.300 回答