如何从git状态列表中隐藏已删除的文件?

时间:2012-09-13 09:32:59

标签: ruby-on-rails git vim

我正在寻找以下问题的最佳答案:

当我创建新分支时,我必须始终删除文件夹public/assets/(Ruby on Rails,我们仅在部署到生产之前预编译资产)所以这给了我git状态大约500行,如下所示:

...
#   deleted:    public/assets/tinymce/tiny_mce_src.js
#   deleted:    public/assets/tinymce/utils/editable_selects.js
#   deleted:    public/assets/tinymce/utils/form_utils.js
#   deleted:    public/assets/tinymce/utils/mctabs.js
#   deleted:    public/assets/tinymce/utils/validate.js
...

所以我的vim-fugitive开始对这个烂摊子毫无用处。我想从git状态隐藏这些行,但实际上应该删除这些文件。

我不想提交,因为我不想将此删除的文件推送到远程仓库。

2 个答案:

答案 0 :(得分:3)

实际上你应该在你的Git中首先拥有这些资产。

如果您正在使用像Capistrano这样的部署解决方案,则可以在远程计算机上部署期间预编译资产,从而避免将其置于Git存储库中的麻烦。

要在使用capistrano部署期间启用资产编译,您只需将以下内容添加到capfile(deploy.rb):

load 'deploy/assets'

现在无论何时部署到服务器,capistrano都会在部署期间在服务器上进行编译。

然后,您只需从git中删除public/assets目录,然后将其添加到.gitignore

很抱歉不直接回答您的问题,但您所要求的是针对无法解决问题的症状的补救措施。 除非您有充分的理由说明为何拥有Git中的资产,如果是,请说明原因,我们可以找到更好的解决方案。

答案 1 :(得分:1)

首先,你必须做到这一点有点可疑,但无论如何。

您可以通过@...@命令删除所有匹配(:global)行之间的内容,如下所示:

:global@^#\s\+deleted:\s\+public/assets/@delete _

要自动执行此操作,请为Git提交文件类型创建一个autocmd(在~/.vimrc中):

:autocmd FileType gitcommit :global...

或将原始命令放入脚本~/.vim/ftplugin/gitcommit_cleanup.vim