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 :)


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).


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


16

Si está en la carpeta que contiene el archivo

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

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


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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.