我正在运行 Windows 10 64 位,适用于 Windows 的 Git2.20.1. 我通常通过 Visual Studio 使用 git(大部分情况下没有问题)。我唯一一次从命令行使用 git 是当我需要推送标签时。
问题是当我git push
在 Git Bash(cmd.exe 上的 BASH 模拟)上输入时,出现以下错误消息:
git: 'remote-Z' is not a git command. See 'git --help'.
The most similar command is
remote-fd
就像我输入了 一样git remote-Z
。据我尝试,除了 之外,任何尾随选项都会导致相同的错误--help
,这会在我的浏览器上打开“git-push(1) 手册页”的本地副本。
我该如何git push
重新开始工作,甚至解决这个问题?
到目前为止,我重启了系统,重新安装了 Windows 版 Git(最新版本),确保它D:\Program Files\Git\cmd
在Path
系统环境值中(我甚至把它放在了列表的顶部),但没有成功。git remote-Z
此时谷歌搜索也没有帮助。
以下是我已检查过的内容:
- 我检查了配置文件(系统、全局和本地)。它们都不包含任何与 相关的内容
alias
。 $ git --exec-path
返回D:/Program Files/Git/mingw64/libexec/git-core
。该目录充满了 git 可执行文件,我确定git-push.exe
它在那里。- 最让我困惑的是,当我
cd
进入本地存储库并"D:\Program Files\Git\mingw64\libexec\git-core\git-push.exe"
直接运行时,会出现相同的错误消息git: 'remote-Z' is not a git command.
。我确保重新安装了整个可执行文件,但问题仍然存在。 - 但是,当我
git push
在 git 存储库之外输入时,会出现此消息:fatal: not a git repository (or any of the parent directories): .git
- 好像命令正常工作。 - 我使用的存储库是由 Visual Studio 2015 创建的。
- 本地存储库的路径不包含多字节字符,但远程源(位于我公司的网络共享上)的路径包含多字节字符。这有关系吗?
答案1
这是在您的系统上的一个 Git 存储库中还是在所有 Git 存储库中?
我的感觉是,不知何故,您在单个存储库上设置了一个搞砸的遥控器,现在remote-Z
(或以某种方式触发这些字符的某个东西)位于您正在努力的特定存储库的配置中。这是基于您在此处所说的内容:
“但是,当我
git push
在 git 存储库之外输入内容时,会出现以下消息:fatal: not a git repository (or any of the parent directories): .git - as if the command is working normally.
”
如果您没有在存储库之外收到该消息,则表明该存储库的特定 Git 配置存在问题。
运行以下命令检查设置了哪些遥控器:git remote -v
。有关与遥控器交互的更多详细信息可以在这里找到。您还可以手动检查项目根目录config
中的文件,因为它基本上只是一个文本文件。在 macOS 和 Linux 上,它位于其中,因此请在 Windows 设置中的类似位置查找某些内容;它应该会显示一些有用的信息。.git
.git/config
答案2
先前的评论让我找到了答案。在每个存储库的配置文件中,[remote "origin"]
设置如下:
[remote "origin"]
url = Z:///path\\to\\MyRepo.git
更改url
为
url = Z:/path/to/MyRepo.git
或者
url = Z:\\path\\to\\MyRepo.git
使命令行和 Visual Studio 中的所有内容都恢复正常工作。(Visual Studio 自动将反斜杠加倍。)
我记得我曾经努力在共享网络驱动器上创建远程存储库,并在某处读到驱动器号后需要三个正斜杠。这让事情在当时得以顺利进行,所以我配置了全部我的本地存储库就是这样的。不确定是什么改变了 git 命令行上的行为。
我觉得在解析上面的斜杠混合时,驱动器号以Z
某种方式与其前面的 融合在一起[remote "origin"]
,导致remote-Z
,并神秘地删除了push
我输入的内容。不知道解析结果为什么会变成这样。