Git会忽略已编译的CSS,但会将最新版本保留为生产就绪状态

时间:2019-05-29 17:51:39

标签: git

我曾经将已编译的最小CSS文件提交到存储库,然后我意识到每次都将整个文件发送出去,因为它是在一行中缩小的。因此,这意味着每次修改后,我都会在历史记录中保存一个完整的CSS文件,并且该文件会无故迅速添加。

我们可以忽略文本编辑器从LESS文件自动编译的CSS文件吗?

如果我将这些CSS文件放在.gitignore中,则它们将不在存储库中,但我还使用存储库来立即获得一个正常工作的网站。

我总是从本地计算机编译LESS文件,并希望保持这种状态(因此,建议用户不要使用Grunt或其他在用户加载页面时自动编译的文件,请:P)。

理想的解决方案是仅将最新文件保留在CSS文件的回购中。对于历史记录,我将检查LESS文件。 CSS文件只能在git clone / pull之后使站点正常工作。

3 个答案:

答案 0 :(得分:3)

让我看看是否可以在这里总结您的要求:

  • 最终用户访问您的服务器时应收到缩小的CSS
  • 您的服务器使用您的git repo作为其代码源(希望是Master或Production分支)
  • 您不希望仓库中有很多缩小的CSS历史记录
  • 您要在回购中查看开发人员可读的CSS历史记录

这些是很常见的要求。大多数人在每次生产推送时都使用部署脚本一致地执行这样的操作-他们可以在服务器上触发以从仓库下载源代码,最小化所有CSS / JS / HTML并以任何新要求更新包管理器的脚本,重新加载任何需要重新加载的本地服务,刷新/预热缓存等。这可以是您编写的简单Web服务,然后通过钩子从GitHub / BitBucket /调用(无论是否推送到生产分支),也可以使用专门为帮助您可靠地部署而构建的部署框架。

如果您在成熟的框架中进行编码,那么可能已经有了一些部署工具,您可以花很少的精力就可以利用它。如果不是这样,那么如果您不想自己编写,就必须搜索特定于语言的内容(取决于您在服务器上需要执行的工作,除了复制存储库和缩小代码,还要自己编写一个Webhook)是最快,最简单的解决方案)。

答案 1 :(得分:1)

关键是要区分版本化的源文件和生成的构建工件

LESS文件是源文件,属于您的Git源存储库。但是,生成的CSS文件是构建过程的产物,并且是构建工件,就像Windows .exe / .dll或Java .class文件一样。

出于以下几个原因,不应将构建工件提交给源存储库:

  • 在版本控制历史记录中添加噪音,并通过提交来更新生成的文件
  • 使用分支/合并时会导致其他合并冲突
  • 如果您想使用.gitignore来忽略文件,则
  • 不起作用;如果文件已提交到存储库,则不会被忽略,并且将显示更改

最佳实践通常将构建产品隔离到项目根目录的特定子目录中,例如buildoutputbin,其中存储了所有构建工件。然后可以将此单个子目录添加到.gitignore

您的自动化构建过程应该使构建工件可用于部署或下载。但是这些工件不会提交给源存储库。

答案 2 :(得分:0)

  • 不要在git中提交css文件
  • 请勿使用git push作为部署脚本
  • 编写一个单独的部署脚本,该脚本将您的代码和最小化的CSS从本地计算机打包,然后将其复制到生产服务器中

就通过网络发送文件而言,如果git可以做到,scp也可以做到。