Git - 删除并排除配置文件

问题描述:

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

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

+0

究竟是你想做些什么?你想恢复2周前发生的单一提交吗? – BastiBen 2009-12-07 19:18:08

可以

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”下的说明进行操作。
    在这两种情况下,您的机密信息不会被“悄悄”更换或删除...
+0

。黄金,谢谢! 。 – IvRRimUm 2016-12-13 14:50:08

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

Link

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'