Git - 删除和排除配置文件

时间:2009-12-07 19:15:43

标签: git version-control configuration-management

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

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

4 个答案:

答案 0 :(得分:19)

你可以

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

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

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

(谨慎使用,先备份)

问题How do I remove sensitive files from git’s history在这个敏感话题上有更多内容。

这个过程的问题有两个:

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

答案 1 :(得分: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'

答案 2 :(得分:0)

答案 3 :(得分:0)

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

Link