git暂存提交的文件名无效

x6492ojm  于 2023-01-24  发布在  Git
关注(0)|答案(4)|浏览(217)

我遵循了一个指南,通过在文件名中添加**?v=来确保您的JavaScript和CSS文件在更新时总是被刷新。然而Windows和git不喜欢这种命名约定,但我使用Cygwin将文件命名为audit.cssaudit.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'
s5a0g9ez

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服务器忽略。

h9vpoimq

h9vpoimq2#

我没有测试系统,但是您可以更严格地删除本地更改
请注意,这两种方法都将丢弃状态,因此要谨慎处理您希望保留的任何其他并行更改
放弃本地更改

git checkout -- .  # <-- note .

放弃对HEAD的任何更改

git reset --hard
ni65a41a

ni65a41a3#

因为你没有提交任何东西到远程分支(即github),你可以像这样回滚你的修改
git重置--硬HEAD
这样做的目的是删除你上次推送到远程存储库(即你上次git push)时的所有修改
另一种方法是您可以通过文件资源管理器更改您的文件。如果您打开文件并看到它,右键单击,重命名为新名称。但是,这可能不起作用,因为您以前更改了文件扩展名为'.css?v=1.0',这可能会损坏您的文件。

  • 根据经验,扩展名是计算机知道文件类型的一种方式,您不应该更改“.”之后的任何内容
  • 另一个规则是不要用特殊字符或空格命名文件,这会导致很多路径问题和应用程序之间的兼容性问题

另一种方法是直接删除该文件,并再次从头开始该文件。您可以使用文件资源管理器或在命令行中使用此命令删除该文件
转到文件的位置
rm稽查,css?v=1.0

bjp0bcyl

bjp0bcyl4#

你误解了导游的意思。
它告诉你把 * 加到你的url* 中,在文件名的末尾,文件名仍然应该是audit.css
在所有的文本处理中,都有一个小小的舞蹈在进行,它被精心编排和调整......哇,现在已经经过了几代人的文字处理,尽可能地不被打扰,但是你刚刚被兔子窝的一个条目绊倒了。
如果你有动力的话,here's the start of the particular rabbit hole you fell in to.搜索一个问号或者直接开始阅读,这个文档会告诉你你的网址是如何被解析的,以及应该对这些片段做些什么。
引用的文件仍为audit.css;你的服务器和浏览器之间的网页缓存应该记住整个缓存的网址,但是你的服务器应该把?和后面的解释为一个带参数的查询,有时候可以忽略,这里应该忽略。所以如果你改变?v=查询,缓存会发现它不匹配他们已经缓存的,然后把请求沿着你的服务器。如果您想在此使用中保持理智,则可以将其设置为忽略该特定查询。

相关问题