我正在尝试执行git add --patch -- <file>
,但命令从未完成。 MINGW64 Shell仅显示“系统找不到指定的路径。”
当通过设置GIT_TRACE = 1并尝试运行某些组件命令来缩小原因时,我发现该错误是由--interactive选项引起的,并且无论正在运行什么git命令,都可以看到相同的效果
在以下交互式命令上设置GIT_TRACE = 1会显示输出:
$ GIT_TRACE=1 git add --interactive -- .gitignore
19:16:47.185964 git.c:350 trace: built-in: git 'add' '--interactive' '--' '.gitignore'
19:16:47.185964 run-command.c:336 trace: run_command: 'add--interactive' '--' '.gitignore'
19:16:47.215964 git.c:564 trace: exec: 'git-add--interactive' '--' '.gitignore'
19:16:47.215964 run-command.c:336 trace: run_command: 'git-add--interactive' '--' '.gitignore'
19:16:47.345964 git.c:350 trace: built-in: git 'rev-parse' '--git-dir'
19:16:47.375964 git.c:350 trace: built-in: git 'rev-parse' '--show-prefix'
19:16:47.405964 git.c:350 trace: built-in: git 'config' '--get-colorbool' 'color.interactive' 'false'
19:16:47.436965 git.c:350 trace: built-in: git 'config' '--get-colorbool' 'color.diff' 'false'
19:16:47.466965 git.c:350 trace: built-in: git 'config' '--get-color' 'reset'
19:16:47.496965 git.c:350 trace: built-in: git 'config' '--get' 'diff.algorithm'
19:16:47.546965 git.c:350 trace: built-in: git 'config' '--bool' '--get' 'diff.compactionheuristic'
19:16:47.576965 git.c:350 trace: built-in: git 'config' '--get' 'interactive.difffilter'
19:16:47.606965 git.c:350 trace: built-in: git 'config' '--bool' '--get' 'interactive.singlekey'
19:16:47.636965 git.c:350 trace: built-in: git 'rev-parse' '--git-dir'
19:16:47.666965 git.c:350 trace: built-in: git 'update-index' '--refresh'
19:16:47.793965 git.c:350 trace: built-in: git 'ls-files' '--' '.gitignore'
The system cannot find the path specified.
19:16:47.843965 git.c:350 trace: built-in: git 'diff-index' '--cached' '--numstat' '--summary' '4b825dc642cb6eb9a060e54bf8d69288fbee4904' '--' '.gitignore'
19:16:47.873966 git.c:350 trace: built-in: git 'diff-files' '--numstat' '--summary' '--raw' '--' '.gitignore'
尝试添加不带交互式选项的文件,按预期方式进行。仅当添加了交互式(或补丁)选项时,操作才会失败。
请注意,尝试运行命令时,我最初遇到以下问题:
Can't locate Git.pm in @INC (you may need to install the Git module) (@INC contains: /mingw64/share/perl5/site_perl D:/Apps/StrawberryPerl/perl/site/lib D:/Apps/StrawberryPerl/perl/vendor/lib D:/Apps/StrawberryPerl/perl/lib) at C:\Program Files\Git\mingw64/libexec/git-core\git-add--interactive line 7.
BEGIN failed--compilation aborted at C:\Program Files\Git\mingw64/libexec/git-core\git-add--interactive line 7.
但是,将Git.pm和Error.pm模块复制到perl包含文件夹后,问题变成了该问题顶部描述的问题。
最后,为了进一步解决这个问题,我在Windows命令提示符(cmd.exe)中运行了该命令,但出现了完全不同的错误:
c:\code\proj>git add --patch .gitignore
error: wrong number of arguments
usage: git config [<options>]
Config file location
--global use global config file
--system use system config file
--local use repository config file
-f, --file <file> use given config file
--blob <blob-id> read config from given blob object
Action
--get get value: name [value-regex]
--get-all get all values: key [value-regex]
--get-regexp get values for regexp: name-regex [value-regex]
--get-urlmatch get value specific for the URL: section[.var] URL
--replace-all replace all matching variables: name value
[value_regex]
--add add a new variable: name value
--unset remove a variable: name [value-regex]
--unset-all remove all matches: name [value-regex]
--rename-section rename section: old-name new-name
--remove-section remove a section: name
-l, --list list all
-e, --edit open an editor
--get-color find the color configured: slot [default]
--get-colorbool find the color setting: slot [stdout-is-tty]
Type
--bool value is "true" or "false"
--int value is decimal number
--bool-or-int value is --bool or --int
--path value is a path (file or directory name)
Other
-z, --null terminate values with NUL byte
--name-only show variable names only
--includes respect include directives on lookup
--show-origin show origin of config (file, standard input, blob, command line)
config --get-color color.interactive.prompt bold blue: command returned error: 129
我检查了我的git配置文件,但未设置此选项,因此我猜测它是在某处设置的默认设置。
除了问题的明显方面(即使--interactive
或--patch
选项按预期方式工作)之外,我还希望获得有关进一步调试此问题的任何建议或技巧。除了显示是问题的--interactive
选项之外,我使用的各种TRACE选项并没有真正突出问题所在。
答案 0 :(得分:0)
简而言之-答案是升级所用Windows的Git版本。我的版本是2.10.1.windows.1,已有两年的历史了。我升级到2.19.0.windows.1,现在一切都可以正常工作了。
所以问题可能是因为该版本的git中存在错误,在这种情况下,希望这会给其他使用该版本的人一个提示。另外,我的安装可能会出现问题,新安装的git会自动纠正该问题。在这种情况下,如果遇到类似的问题,请考虑一下尝试一下。
这不是一个特别令人满意的答案-但是仍然是一个答案。