无法 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
并在以下时间创建了一个临时文件那个用户提交并推送了?)。
- 观察到标记为
(gone)
的文件将被 git 删除
- 问题是文件名包含与 Windows 文件系统不兼容的字符,并且该文件从未存在于我的本地 Windows 存储库中。
如果我从 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 提供了一种无需检出即可重命名文件的方法。简而言之...
git checkout origin/master -f
获取没有问题文件的结帐。
- 创建一个分支。
- 添加并提交“已删除”的有问题的文件。
- 使用
git ls-tree HEAD^
获取问题文件的ID。
- 使用
git cat-file -p <ID>
获取问题文件的内容
- 将内容放入新文件中。
- 添加并提交。
在我的本地 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
并在以下时间创建了一个临时文件那个用户提交并推送了?)。
- 观察到标记为
(gone)
的文件将被 git 删除
- 问题是文件名包含与 Windows 文件系统不兼容的字符,并且该文件从未存在于我的本地 Windows 存储库中。
如果我从 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 提供了一种无需检出即可重命名文件的方法。简而言之...
git checkout origin/master -f
获取没有问题文件的结帐。- 创建一个分支。
- 添加并提交“已删除”的有问题的文件。
- 使用
git ls-tree HEAD^
获取问题文件的ID。 - 使用
git cat-file -p <ID>
获取问题文件的内容 - 将内容放入新文件中。
- 添加并提交。