1

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

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

?一定是因为它是一个回购keybase

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

C: repo_folder> git diff origin/master --compact-summary
 "\004" (gone)                               | 1902  ---------------------------
 some irrelevant stuff                       | (num) -

删除的文件"\004"(我的本地从未出现过)似乎来自某些Mac OS(某人可能已经打开了一个csv并且在该用户进行提交并推送时创建了一个临时文件?)。

  • 观察标记为的文件(gone)将被git删除
  • 问题是文件名包含与 Windows 文件系统不兼容的字符,并且该文件从未存在于我的本地 Windows 存储库中。

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

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

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

编辑

来自的克隆Linux有助于确定该文件?确实存在。这也可以通过使用以下命令直接从 Windows 进行检查:(git ls-tree origin/master显示原始有问题的名称"\004"

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

希望这能澄清有类似问题的人。

4

1 回答 1

1

?(或者它可能是 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. 添加并提交。
于 2020-10-05T19:54:11.913 回答