如何git提交单个文件/目录


215

尝试了以下命令:

git commit path/to/my/file.ext -m 'my notes'

收到git版本1.5.2.1中的错误:

error: pathspec '-m' did not match any file(s) known to git.
error: pathspec 'MY MESSAGE' did not match any file(s) known to git.

单个文件或目录提交的语法不正确吗?

答: 参数有望在这一顺序...

git commit -m 'my notes' path/to/my/file.ext

更新:不再严格了:)


1
您确定您的版本正确吗?更新 1.5.2.1?1.5.2.1已经超过4岁了。
CB Bailey

有什么禁止您升级git的吗?
亚当·迪米特鲁克

顺便说一句:这是从旧配方中衍生出来的虚拟机。当地的Git是最新的,没有意识到这个版本是古老的。严格性改变了。
doublejosh 2014年

Answers:


351

您的论点顺序错误。尝试git commit -m 'my notes' path/to/my/file.ext,或者如果您想更明确地讲,git commit -m 'my notes' -- path/to/my/file.ext

顺便说一句,git v1.5.2.1是4.5周年。您可能需要更新到较新版本(当前版本为1.7.8.3)。


2
您进行了很好的观察。但是,有趣的是Windows上的Git 1.7.5.1巧妙地接受了git commit path_to_file -m 'message'
Sri Sankaran

@SriSankaran:听起来好像他们教它识别不规则的论点。但是根据文档,正确的顺序是将文件列表放在最后,并且坚持使用文档化的版本可能是个好主意。
莉莉·巴拉德

谢谢。这些邮件的顺序已更改...或至少是顺序的严格性已更改;)
doublejosh 2012年

1
@DavidDimalanta:你是什么意思?
莉莉·巴拉德

1
@ihebiheb看,现在我没有看到任何其他非标志的参数git commit,所以我想答案是“没有”,但在许多其他Git命令的--其它参数自由区分路径(例如,用git log--防止路径而是解释为修订范围)
莉莉·巴拉德


16

如果位于包含文件的文件夹中

git commit -m 'my notes' ./name_of_file.ext

1
如果我已经在文件中,是否需要前导“ ./”(点正斜杠)?我可以用git commit -m "my note" name_of_file.txt吗?
克里斯22年

@ Chris22我不确定“如果我已经在文件中”是什么意思(也许是“目录中”?)... ./只是普通的路径语法,但是是的,在此示例中不是必需的。
乔纳森·克罗斯

7

使用该-o选项。

git commit -o path/to/myfile -m "the message"

-o,-仅提交指定的文件


该选项不是必需的。如果在commit命令中包括文件页面,则仅提交那些文件。
doublejosh

很高兴知道您是否想确保何时遇到其他参数,例如--amend
Tomas Varga

5

在输入提交消息后指定路径,例如:

git commit -m "commit message" path/to/file.extention

4

对于Windows 7上的git 1.9.5:“我的笔记”(双引号)更正了此问题。就我而言,将文件放在-m'message'之前或之后。没有影响;问题是使用单引号。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.