Как сделать git коммитить один файл / каталог

216

Пробовал следующую команду:

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

ОБНОВЛЕНИЕ: это не строгое больше :)

doublejosh
источник
1
Вы уверены, что ваша версия верна? Обновление до 1.5.2.1? 1.5.2.1 уже исполнилось 4 года.
CB Bailey
Что-нибудь запрещает вам обновлять git?
Адам Димитрук
Кстати: это была виртуальная машина, появившаяся по старому рецепту. Местный Git был современным, не понимал, что эта версия была древней. Строгость изменилась.
doublejosh

Ответы:

352

Ваши аргументы в неправильном порядке. Попробуйте 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
Вы делаете хорошее наблюдение. Тем не менее, интересно, Git 1.7.5.1 на Windows беспечно принимаетgit commit path_to_file -m 'message'
Шри Шанкаран
@SriSankaran: Похоже, они научили его распознавать не по порядку аргументы. Но в соответствии с документацией, правильный порядок - ставить список файлов последним, и, вероятно, стоит придерживаться документированной версии вещей.
Лили Баллард
Спасибо. Порядок этих сообщений изменился ... или хотя бы изменилась строгость порядка;)
doublejosh
1
@DavidDimalanta: Что ты имеешь в виду?
Лили Баллард
1
@ihebiheb Глядя прямо сейчас я не вижу каких - либо других параметров , не флаг , чтобы git commitтаким образом , я предполагаю , что ответ «ничего», но и во многих других мерзавца командует --отличает пути от других аргументов произвольной формы (например, git logв --предотвращает путь от вместо этого интерпретируется как диапазон ревизий)
Лили Баллард
87

Пытаться:

git commit -m 'my notes' path/to/my/file.ext 
wadesworld
источник
16

Если вы находитесь в папке, содержащей файл

git commit -m 'my notes' ./name_of_file.ext
Piethon
источник
1
если я уже нахожусь в файле, нужно ли использовать начальный символ "./" (точка-косая черта)? я мог бы использовать git commit -m "my note" name_of_file.txt?
Chris22
@ Chris22 Я не уверен, что вы подразумеваете под «если я уже в файле» (может быть, вы имели в виду «в каталоге»?) ... ./это просто обычный синтаксис пути, но да, в этом примере это необязательно.
Джонатан Кросс
7

Используйте -oопцию.

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

-o, --onmit только указанные файлы

W.Perrin
источник
Эта опция не нужна. Если вы включите файловую страницу в вашу команду commit, она будет фиксировать только эти файлы.
doublejosh
Полезно знать, хотите ли вы убедиться в этом, когда возитесь с другими параметрами, например,--amend
Томас Варга
5

Укажите путь после введенного сообщения о коммите, например:

git commit -m "commit message" path/to/file.extention
Рахул Т.П.
источник
4

Для git 1.9.5 в Windows 7: «мои заметки» (двойные кавычки) исправили эту проблему. В моем случае размещение файлов до или после '-m' сообщения '. не имеет значения; использование одинарных кавычек было проблемой.

EddieBaby
источник