Git如何添加一个名称带有空格的文件夹

37

问题

当我想将某些文件加入暂存区时,通常键入“git add < folder-name >”。但是,如果文件夹的名称中带有空格,则无法添加。我的git add自动完成不能正确地转义空格。

例如

我有一个名为:Folder A 的文件夹

我运行命令git add F < tab-autocomplete >,它变成了git add Folder A/。 如果我尝试添加此文件夹,它会抛出一个错误:

fatal: pathspec 'Folder' did not match any files

这是因为正确的语法应该是git add Folder\ A/

总结

然而,我不知道如何解决这个问题,也找不到任何有关永久性解决方案的资源。这个问题"How git deals with folder names with spaces" 描述了一种解决方法。但是它涉及将引号放在文件夹名称周围,这并不是我真正想做的。是否有更好的解决方法呢?

我正在使用git版本2.2.0和zsh版本5.0.7。谢谢您提前!


最新的git 2.8.3版本问题仍然存在吗? - VonC
2个回答

72
解决方法是将文件夹名称用单引号 ' 和 ' 包裹起来。
在您的示例中,请尝试以下操作:
git add 'Folder A'

希望这能有所帮助 :)


14
在Windows中,必须使用双引号,例如git add "Folder A"。 - derek
我的意思是,显然“在Windows上”太宽泛了。例如,如果您正在使用带有git-windows的MinGW-w64,则'是可以接受的。但这是一个好观点。; ^) - ruffin
这在Mac终端中运行良好。谢谢。 - kiran kumar

0

您可以检查一下 "git completion with zsh: filenames with spaces aren't being escaped properly" 中提到的设置是否有效:

当我使用 Tab 键补全文件名时,Shell 会按预期对文件名进行反斜杠转义。

% echo "testing" >> test<tab>

按三次Tab键后自动完成此操作。
% echo "testing" >> test\ four\ -\ latest.txt

换句话说,正确的完成不应该需要引号("),但应该转义空格。

1
当我运行命令 echo "testing" >> test<tab>时,它会正确自动补全。然而,当我尝试执行 git add <tab> 时,它不会自动补全,就像上面所述的那样。我能否进一步澄清我的问题?作为解决办法,我已经开始使用 git add "<tab autocomplete>" ,这样可以避免空格。但正如@VonC所说:“正确的完成不应该需要引号("),但应该转义空格。” - Jonathan Yeong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接