0

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

当我创建新分支时,我必须始终删除文件夹public/assets/(Ruby on Rails,我们仅在部署到生产之前预编译资产)所以这给了我 git status 大约 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 status 隐藏这些行,但实际上应该删除这些文件。

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

4

2 回答 2

3

实际上,您一开始就不应该在Git中拥有这些资产。

如果您使用像 Capistrano 这样的部署解决方案,您可以在远程机器上部署期间预编译资产,从而省去将它们放在 Git 存储库中的麻烦。

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

load 'deploy/assets'

现在,每当您部署到服务器时,capistrano 都会在部署期间在服务器上进行编译。

然后,您可以简单地public/assets从 git 中删除目录并将它们添加到.gitignore

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

于 2012-09-13T09:38:34.307 回答
1

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

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

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

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

:autocmd FileType gitcommit :global...

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

于 2012-09-13T09:49:02.543 回答