Git 从 bitbucket 中删除无效的、不存在的 c:\tmp\file.har 命名文件的引用

Git removing references from invalidly, non-existing, c:\tmp\file.har named file in bitbucket

这个问题是关于如何 Git 从 bitbucket

中删除无效的、不存在的 c:\tmp\file.har 命名文件的引用

我通常在 linux 上工作(错误没有浮出水面,可能是因为它不是保留的 OS path/filename,并且结帐只是忽略了该文件),但是现在我们的 git 用户之一在 windows 报告中 结帐时他们看到;

Untracked files Prevent checkout, please move or commit them before checkout
"Couldn't checkout origin/master invalid path c:\tmp\file.har"

我在 bitbucket 中发现有人设法签入了这样命名的文件,不要问我他们是如何管理的,但它使 GIT 签出,即使 --force 由于命名文件无效而失败。通常 c:\tmp 不是我们用作签出项目根目录的地方。

我还尝试将 c:\tmp git 设置为 root,并在 tmp 中手动创建此类命名文件,但即使如此 git 命令仍显示上述错误或类似类型的错误。

如果我尝试做一个 git rm file.har 它 returns 致命:pathspec file.har 不匹配任何页面

还尝试了打开 IDE 之类的操作,然后尝试对 GIT 显示为删除的所有文件进行回滚,因为它没有成功检出,因此“认为”它们已从中删除磁盘。 即使失败并显示未跟踪文件或文件名无效的消息。 有时文件名显示在 GIT 双引号内的错误消息中有时是单引号。

已尝试使用 git 版本 2.28 和 2.35。0.windows.1

感谢您提供任何纠正方法的提示

听起来你在存储库中有一个文件,字面意思是 c:\tmp\file.har,这是一个有效的文件名,在 Unix 系统上不包含路径分隔符。具体来说,这里的反斜杠不是目录分隔符,只是文件名中的一个普通字符。但是,正如您所指出的,如果人们将在 Windows.

上使用存储库,则使用此路径名是不友好的

解决此问题的最佳方法是在 Linux 或 Windows 子系统上为 Linux 克隆存储库,然后执行此操作:

$ git rm 'c:\tmp\file.har'
$ git commit

请注意,您应该为此使用单引号。然后,合并该更改,问题就会消失。

您也可以尝试相同的命令,但是将 --cached 传递给 git rm,如果您是 运行 in Git Bash on Windows。但是,我认为这不太可能奏效,因为那是 Windows.

上的不同路径

如果找不到确切的文件名,可以使用 git ls-files 查看 Git 认为索引中存在的文件。只要您的文件名不包含换行符,就足以找到正确的文件。