我遵循了一个指南,通过在文件名中添加**?v=来确保您的JavaScript和CSS文件在更新时总是被刷新。然而Windows和git不喜欢这种命名约定,但我使用Cygwin将文件命名为audit.css到audit.css?v=1.0**。然而git不喜欢。我不喜欢这个文件名,它在修改时卡住了。我怎样才能删除这个文件的已删除修改?我试过在stackoverflow上从其他页面进行一些修改,但都失败了。
Cygwin$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: audit.css?v=1.0 -> audit.css
Cygwin$ git restore --staged audit.css
Cygwin$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
deleted: audit.css?v=1.0
Cygwin$ git restore --staged audit.css?v=1.0
error: invalid path 'audit.css?v=1.0'
Cygwin$ git reset 'audit.css?v=1.0'
error: invalid path 'audit.css?v=1.0'
fatal: make_cache_entry failed for path 'audit.css?v=1.0'
4条答案
按热度按时间s5a0g9ez1#
Windows操作系统与该文件命名约定不兼容。
Windows文件名不能包含
" * / : < > ? \ |
。请参阅this question。1.更简单:将git操作转移到WSL中,你可以通过微软商店IIRC安装它,它只是被称为“Ubuntu”。
WSL没有Windows那样的文件名限制,WSL通过在其他地方记录Linux文件名来实现这一点,允许Linux“认为”它已经摆脱了向文件名添加Windows限制字符的限制。
1.更难:安装Docker Desktop for Windows并使用它来执行git操作。
这可能不起作用,因为如果阅读/写入文件的软件仍然可能需要在Windows(如IDE)上运行,则同样的文件名限制适用。
1.不要使用
?v=
文件名后缀。这听起来像是版本控制的误用。
?v=...
约定对我来说看起来像是你在HTML中放入的defeat the cache via URL parameters字符串。让HTML包含?v=...
字符串可能会更好,并让它们被Web服务器忽略。h9vpoimq2#
我没有测试系统,但是您可以更严格地删除本地更改
请注意,这两种方法都将丢弃状态,因此要谨慎处理您希望保留的任何其他并行更改
放弃本地更改
放弃对HEAD的任何更改
ni65a41a3#
因为你没有提交任何东西到远程分支(即github),你可以像这样回滚你的修改
git重置--硬HEAD
这样做的目的是删除你上次推送到远程存储库(即你上次git push)时的所有修改
另一种方法是您可以通过文件资源管理器更改您的文件。如果您打开文件并看到它,右键单击,重命名为新名称。但是,这可能不起作用,因为您以前更改了文件扩展名为'.css?v=1.0',这可能会损坏您的文件。
另一种方法是直接删除该文件,并再次从头开始该文件。您可以使用文件资源管理器或在命令行中使用此命令删除该文件
转到文件的位置
rm稽查,css?v=1.0
bjp0bcyl4#
你误解了导游的意思。
它告诉你把 * 加到你的url* 中,在文件名的末尾,文件名仍然应该是
audit.css
。在所有的文本处理中,都有一个小小的舞蹈在进行,它被精心编排和调整......哇,现在已经经过了几代人的文字处理,尽可能地不被打扰,但是你刚刚被兔子窝的一个条目绊倒了。
如果你有动力的话,here's the start of the particular rabbit hole you fell in to.搜索一个问号或者直接开始阅读,这个文档会告诉你你的网址是如何被解析的,以及应该对这些片段做些什么。
引用的文件仍为
audit.css
;你的服务器和浏览器之间的网页缓存应该记住整个缓存的网址,但是你的服务器应该把?
和后面的解释为一个带参数的查询,有时候可以忽略,这里应该忽略。所以如果你改变?v=
查询,缓存会发现它不匹配他们已经缓存的,然后把请求沿着你的服务器。如果您想在此使用中保持理智,则可以将其设置为忽略该特定查询。