Cómo git commit un solo archivo / directorio

216

Intenté el siguiente comando:

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

Recibe un error en git versión 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.

¿Es esa sintaxis incorrecta para el archivo singe o las confirmaciones de directorio?

RESPUESTA: Se esperaban argumentos en este orden ...

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

ACTUALIZACIÓN: ya no es estricto :)

doublejosh
fuente
1
¿Estás seguro de que tienes tu versión correcta? ¿Actualizando a 1.5.2.1? 1.5.2.1 tiene más de 4 años ahora.
CB Bailey
¿Hay algo que te prohíba actualizar git?
Adam Dymitruk
Por cierto: esta era una máquina virtual creada a partir de una receta antigua. Git local estaba actualizado, no se dio cuenta de que esta versión era antigua. La rigidez cambió.
doublejosh

Respuestas:

352

Sus argumentos están en el orden incorrecto. Tratar git commit -m 'my notes' path/to/my/file.ext, o si quieres ser más explícito, git commit -m 'my notes' -- path/to/my/file.ext.

Por cierto, git v1.5.2.1 tiene 4,5 años. Es posible que desee actualizar a una versión más nueva (1.7.8.3 es la versión actual).

Lily Ballard
fuente
2
Haces una buena observación. Sin embargo, curiosamente, Git 1.7.5.1 en Windows acepta alegrementegit commit path_to_file -m 'message'
Sri Sankaran el
@SriSankaran: Parece que le enseñaron a reconocer argumentos fuera de orden entonces. Pero de acuerdo con la documentación, el orden correcto es colocar la lista de archivos al final, y probablemente sea una buena idea atenerse a la versión documentada de las cosas.
Lily Ballard
Gracias. El orden de estos mensajes cambió ... o al menos la rigidez del orden cambió;)
doublejosh
1
@DavidDimalanta: ¿Qué quieres decir?
Lily Ballard
1
@ihebiheb Mirando ahora no veo ningún otro parámetro no son del pabellón de git commitmodo que supongo que la respuesta es "nada", pero en muchos otros comandos de Git los --caminos distingue de otros argumentos de forma libre (por ejemplo, con git loglos --evita un camino desde interpretado como un rango de revisión en su lugar)
Lily Ballard
87

Tratar:

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

Si está en la carpeta que contiene el archivo

git commit -m 'my notes' ./name_of_file.ext
Piethon
fuente
1
si ya estoy en el archivo, ¿necesito un "./" (punto-barra diagonal) inicial? podría usar git commit -m "my note" name_of_file.txt?
Chris22
@ Chris22 No estoy seguro de lo que quieres decir con "si ya estoy en el archivo" (¿tal vez quisiste decir "en el directorio"?) ... ./es una sintaxis de ruta normal, pero sí, no es necesario en este ejemplo.
Jonathan Cross
7

Usa la -oopción.

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

-o, --solo compromete solo los archivos especificados

W.Perrin
fuente
Esa opción no es necesaria. Si incluye una página de archivo en su comando de confirmación, solo confirmará esos archivos.
doublejosh
Bueno saber si usted quiere asegurarse de que jugar con otros parametros, por ejemplo--amend
Tomas Varga
5

Especifique la ruta después del mensaje de confirmación ingresado, como:

git commit -m "commit message" path/to/file.extention
Rahul TP
fuente
4

Para git 1.9.5 en Windows 7: "mis notas" (comillas dobles) corrigió este problema. En mi caso, poner los archivos antes o después del -m 'mensaje'. no hizo ninguna diferencia; El uso de comillas simples fue el problema.

EddieBaby
fuente