无法 git 结账大师:无效路径“?”

Cannot git checkout master: invalid path '?'

在我的本地 master 上出现“不成功”git pull 后,出现错误阻止切换回 master:

C: repo_folder> git checkout master
error: invalid path '?'

? 一定是因为它是一个 keybase 仓库。

从另一个分支我检查了上次提交的一些文件:

C: repo_folder> git diff origin/master --compact-summary
 "[=12=]4" (gone)                               | 1902  ---------------------------
 some irrelevant stuff                       | (num) -

删除的文件 "[=18=]4"(在我的本地从未出现过)似乎来自某些 Mac OS(有人可能打开了 csv 并在以下时间创建了一个临时文件那个用户提交并推送了?)。

如果我从 Linux 平台克隆,我可以毫无问题地结帐到 master。但是,在 Windows 中,无法返回到 master 分支。

关于如何解决这个问题有什么想法吗? (已经尝试过一些帖子但没有成功) 我真的不明白它是怎么来的 git 甚至不允许我结帐到 master。我应该提交错误报告吗?

或者,也许我可以创建一个新的 master 分支并删除当前分支。

编辑

来自 Linux 的克隆帮助确定文件 ? 确实存在。 这可以直接从 Windows 以及使用以下命令检查:git ls-tree origin/master(显示原始有问题的名称 "[=18=]4"

接受的答案包括您想要保存文件内容的情况,而在我的情况下,我只想摆脱它。所以在我的例子中,我刚刚从 Linux 中删除了文件,提交并推送了更改,并做了一个 git fetch origin master:master 来获取我的本地 master 并在另一个分支中检出(如我无法结帐到 master)。这终于成功了,我可以结帐到 master.

希望这对有类似问题的人有所帮助。

?(或者可能是 EOT)不能用作 Windows 上的文件名。必须删除或重命名该文件。您可以通过克隆允许 ? 的系统并进行修复来最轻松地做到这一点。

如果您只有 Windows,Fixing Invalid Git Paths on Windows 提供了一种无需检出即可重命名文件的方法。简而言之...

  1. git checkout origin/master -f 获取没有问题文件的结帐。
  2. 创建一个分支。
  3. 添加并提交“已删除”的有问题的文件。
  4. 使用git ls-tree HEAD^获取问题文件的ID。
  5. 使用git cat-file -p <ID>获取问题文件的内容
  6. 将内容放入新文件中。
  7. 添加并提交。