Como git confirmar um único arquivo / diretório

216

Tentei o seguinte comando:

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

Receba um erro na versão 1.5.2.1 do git:

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.

Essa sintaxe está incorreta para o arquivo singe ou o diretório confirmado?

RESPOSTA: Os argumentos eram esperados nesta ordem ...

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

UPDATE: não é mais rigoroso :)

doublejosh
fonte
1
Tem certeza de que sua versão está correta? Atualizando para 1.5.2.1? 1.5.2.1 agora tem mais de 4 anos.
perfil completo de CB Bailey
Alguma coisa está proibindo você de atualizar o git?
Adam Dymitruk
BTW: Esta foi uma VM gerada a partir de uma receita antiga. O Git local estava atualizado, não sabia que essa versão era antiga. A rigidez mudou.
DoubleJosh #

Respostas:

352

Seus argumentos estão na ordem errada. Tente git commit -m 'my notes' path/to/my/file.ext, ou se você quiser ser mais explícito git commit -m 'my notes' -- path/to/my/file.ext,.

Aliás, o git v1.5.2.1 tem 4,5 anos. Você pode querer atualizar para uma versão mais recente (1.7.8.3 é a versão atual).

Lily Ballard
fonte
2
Você faz uma boa observação. No entanto, curiosamente Git 1.7.5.1 no Windows alegremente aceitagit commit path_to_file -m 'message'
Sri Sankaran
@SriSankaran: Parece que eles o ensinaram a reconhecer argumentos fora de ordem. Mas, de acordo com a documentação, a ordem correta é colocar a lista de arquivos por último, e provavelmente é uma boa idéia manter a versão documentada das coisas.
Lily Ballard
Obrigado. A ordem destas mensagens mudado ... ou pelo menos o rigor da ordem mudou;)
doublejosh
1
@DavidDimalanta: Como assim?
Lily Ballard
1
@ihebiheb Olhando agora, não vejo nenhum outro parâmetro que não seja sinalizador, git commitentão acho que a resposta é "nada", mas em muitos outros comandos git o --caminho se distingue de outros argumentos de forma livre (por exemplo, com git logo --impedimento de um caminho) sendo interpretado como um intervalo de revisão)
Lily Ballard
87

Experimentar:

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

Se você estiver na pasta que contém o arquivo

git commit -m 'my notes' ./name_of_file.ext
Piethon
fonte
1
se eu já estiver no arquivo, preciso de um "./" inicial (barra com ponto)? eu poderia usar git commit -m "my note" name_of_file.txt?
precisa
@ Chris22 Não sei bem o que você quer dizer com "se eu já estou no arquivo" (talvez você quis dizer "no diretório"?) ... ... ./é apenas a sintaxe do caminho normal, mas sim, não é necessário neste exemplo.
Jonathan Cruz
7

Use a -oopção

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

-o, --only confirma apenas os arquivos especificados

W.Perrin
fonte
Essa opção não é necessária. Se você incluir uma página de arquivo em seu comando de confirmação, ela somente confirmará esses arquivos.
doublejosh
É bom saber se você quer ter certeza de quando mexer com mais parâmetros, por exemplo--amend
Tomas Varga
5

Especifique o caminho após a mensagem de confirmação inserida, como:

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

Para o git 1.9.5 no Windows 7: "minhas anotações" (aspas duplas) corrigiram esse problema. No meu caso, colocar o (s) arquivo (s) antes ou depois da -m 'mensagem'. não fez diferença; o uso de aspas simples foi o problema.

EddieBaby
fonte