git commit -m 不接受消息中的空格

use*_*400 3 git shell double-quotes

我对 Linux 比较陌生,所以这可能是一个简单的问题,但是当我在 git 提交消息周围使用引号(单引号或双引号)时,这些单词将被视为文件名。如何在消息中使用带有空格的 -m - 我不想使用 vi。

\n\n
user@linux:~/Documents/tmp$ git status\n\nOn branch master\n\nInitial commit\n\nChanges to be committed:\n  (use "git rm --cached <file>..." to unstage)\n\n    new file:   afile\n\nuser@linux:~/Documents/tmp$ git commit -m \xc2\xa8this message has spaces and fails\xc2\xa8 \n\nerror: pathspec \'message\' did not match any file(s) known to git.\n\nerror: pathspec \'has\' did not match any file(s) known to git.\n\nerror: pathspec \'spaces\' did not match any file(s) known to git.\n\nerror: pathspec \'and\' did not match any file(s) known to git.\n\nerror: pathspec \'fails\xc2\xa8\' did not match any file(s) known to git.\n\nuser@linux:~/Documents/tmp$ git commit -m \xc2\xa8nospacesisokay\xc2\xa8\n\n[master (root-commit) 37afcd6] \xc2\xa8nospacesisokay\xc2\xa8\n\n1 file changed, 1 insertion(+)\n\ncreate mode 100644 afile\n
Run Code Online (Sandbox Code Playgroud)\n

use*_*253 6

使用常规引号(双引号"或引号\'),伙计:)对于bash\xc2\xa8来说太奇特了,因此它通过空格将您的消息分成标记,并将这些标记分别传递给git.

\n\n

在类 UNIX 系统中,与 MS Windows 不同cmd.exe(嗯,MinGW 和 Cygwin 也类 UNIX :))将命令行分割成标记是由 shell 执行的,无论是sh兼容csh的 shell(bash、zsh、ash、 sash、ksh、tcsh 等等)。程序接收一个可供使用的参数数组。因此,如果用户想要传递包含空格、转义序列等的行,她应该正确引用或转义该行。

\n