Git 强制推送 git 不知道哪个文件变了?

Git force push files which git does not know changed?

我在摆弄 PageSpeed Insights,它引导我将 Webpack 中的 css 和 js 文件压缩为 .br(用 Brotli 压缩)和 .gz(用 gzip 压缩),这样它们就可以提供给浏览器接受他们。 .htaccess 做出决定。

由于.htaccess 做出决定,我不得不使用AddType 关闭。由于 .htaccess 不适用于多扩展名文件名,我不得不创建一个自定义扩展名,即 cssbrcssgzjsbrjsgz。 在 .htaccess 中,它们被识别得很好:

AddEncoding gzip .jsgz .cssgz
AddType application/javascript .jsgz
AddType text/css .cssgz

AddEncoding br .jsbr .cssbr
AddType application/javascript .jsbr
AddType text/css .cssbr

这通常有效。对于不能使用压缩文件的浏览器,plain css 和 js 也有回退。当我进行更改并使用 webpack 更新文件时,一切正常。但是当我结帐到另一个分支并合并时,git 认为我的自定义文件没有改变。 .css.js 按预期工作,但对于 .cssbr 文件,浏览器通知我它无法解码它们 (ERROR_CONTENT_DECODING_FAILED)。我需要做的是再次修复 运行 webpack 并且它在本地工作,但是 git 不会提交更改,因为文件似乎没有变化。 我试着删除它们并重新阅读。

长话短说:

我有自定义文件,在切换分支或提交时被视为未更改。
我可以从另一个角度寻求解决方案,比如将它们更改为不同的扩展名,但是如何让.htaccess 与它们一起使用?

.htaccess 供参考:

<IfModule mod_headers.c>
  # Serve brotli compressed CSS files if they exist and the client accepts br.
  RewriteCond %{HTTP:Accept-encoding} br
  RewriteRule ^(.*)assets/frontend/(.*)\.css assets/frontend/.cssbr [QSA,L,T=text/css,E=no-gzip:1]

  # Serve gzip compressed CSS files if they exist and the client accepts gzip.
  RewriteCond %{HTTP:Accept-encoding} gzip
  RewriteRule ^(.*)assets/frontend/(.*)\.css assets/frontend/.cssgz [QSA,L,T=text/css,E=no-gzip:1]

  # Serve brotli compressed JS files if they exist and the client accepts br.
  RewriteCond %{HTTP:Accept-encoding} br
  RewriteRule ^(.*)assets/frontend/(.*)\.js assets/frontend/.jsbr [QSA,L,T=text/javascript,E=no-gzip:1]

  # Serve gzip compressed JS files if they exist and the client accepts gzip.
  RewriteCond %{HTTP:Accept-encoding} gzip
  RewriteRule ^(.*)assets/frontend/(.*)\.js assets/frontend/.jsgz [QSA,L,T=text/javascript,E=no-gzip:1]

  # Serve correct content types, and prevent mod_deflate double gzip.
  RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1]
  RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1]
  RewriteRule \.css\.br$ - [T=text/css,E=no-gzip:1]
  RewriteRule \.js\.br$ - [T=text/javascript,E=no-gzip:1]

  <FilesMatch "(\.js\.gz|\.css\.gz)$">
    # Serve correct encoding type.
    Header set Content-Encoding gzip
    # Force proxies to cache gzipped & non-gzipped css/js files separately.
    Header append Vary Accept-Encoding
  </FilesMatch>
  <FilesMatch "(\.js\.br|\.css\.br)$">
    # Serve correct encoding type.
    Header set Content-Encoding br
    # Force proxies to cache gzipped & non-gzipped css/js files separately.
    Header append Vary Accept-Encoding
  </FilesMatch>
</IfModule>

附加信息: 根据 PageSpeed Insights

,我使用 webpack 来压缩文件,因为在服务器上执行此操作会增加时间并首先破坏使用压缩的目的

我找到了解决方案。问题确实出在 git,但它出在更改行尾。

我在 windows,所以 git 将 CRLF 更改为 LF,这破坏了文件,因为它们是二进制文件。 我需要做的是将它们作为二进制文件添加到 .gitattributes 中,如下所示:

*.cssbr binary
*.cssgz binary
*.jsbr binary
*.jsgz binary