当前位置:  开发笔记 > 开发工具 > 正文

如何忽略已经提交的文件?

如何解决《如何忽略已经提交的文件?》经验,为你挑选了1个好方法。

以前,以下是我的.gitignore文件:

...
config/database.yml
.DS_Store

后来我app_config.yml在config目录中创建了一个文件并提交了它.

现在,我意识到我不需要app_config.ymlgit存储库中的文件.我修改了我的.gitignore文件:

...
config/app_config.yml
config/database.yml
.DS_Store

现在,当我提交时,该app_config.yml文件仍在我的仓库中.我想从我的仓库中删除该文件.我该怎么做?



1> VonC..:

正如在" 忽略不删除文件 "中所提到的
(以下引用Nick Quaranto的精彩文章,
在他的博客git ready中 "一次学习git one commit"):

当你告诉Git忽略文件时,它只会停止观看该文件的更改,而不是其他任何内容.
这意味着历史记录仍会记住该文件并拥有它
.

如果要从存储库中删除文件,但将其保存在工作目录中,只需使用:

git rm --cached 

但是,这仍然会将文件保留在历史记录中.

如果你真的想从历史中删除它,你真的有两个选择:

重写您的存储库提交,或

重来.

这两个选项真的太糟糕了,这是有充分理由的:Git努力不丢失你的数据.
就像重新定位一样,Git强迫你考虑这些选项,因为它们是破坏性的操作.

如果您确实想从历史记录中删除文件,git filter-branch那么您正在寻找的钢锯.在使用它之前
一定要阅读它的联机帮助页,因为它将逐字地重写项目的提交.对于某些操作来说,这实际上是一个很好的工具,可以做各种各样的事情,比如完全删除作者提交的项目根文件夹.从所有修订中删除文件的命令是:

git filter-branch --index-filter 'git rm --cached ' HEAD

当您需要清除可能已存储在存储库中的敏感或机密信息时,此操作绝对有用

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有