Как сделать 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

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


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в --предотвращает путь от вместо этого интерпретируется как диапазон ревизий)
Лили Баллард


16

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

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

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 только указанные файлы


Эта опция не нужна. Если вы включите файловую страницу в вашу команду commit, она будет фиксировать только эти файлы.
doublejosh

Полезно знать, хотите ли вы убедиться в этом, когда возитесь с другими параметрами, например,--amend
Томас Варга

5

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

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

4

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.