Come eseguire il commit di un singolo file / directory


216

Ho provato il seguente comando:

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

Ricevi un errore nella versione 1.5.2.1 di 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.

È una sintassi errata per i singoli file o le commit della directory?

RISPOSTA: gli argomenti erano attesi in questo ordine ...

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

AGGIORNAMENTO: non è più severo :)


1
Sei sicuro di avere la versione corretta? Aggiornamento alla 1.5.2.1? 1.5.2.1 ha ormai più di 4 anni.
CB Bailey

C'è qualcosa che ti impedisce di aggiornare git?
Adam Dymitruk,

A proposito: questa era una macchina virtuale derivata da una vecchia ricetta. Local Git era aggiornato, non si rendeva conto che questa versione era antica. La rigidità è cambiata.
doublejosh,

Risposte:


352

I tuoi argomenti sono nell'ordine sbagliato. Provare git commit -m 'my notes' path/to/my/file.ext, o se si vuole essere più esplicito, git commit -m 'my notes' -- path/to/my/file.ext.

Per inciso, git v1.5.2.1 ha 4,5 anni. È possibile che si desideri aggiornare a una versione più recente (1.7.8.3 è la versione corrente).


2
Fai una buona osservazione. Tuttavia, è interessante notare che Git 1.7.5.1 su Windows accetta allegramentegit commit path_to_file -m 'message'
Sri Sankaran il

@SriSankaran: Sembra che gli abbiano insegnato a riconoscere argomenti fuori servizio allora. Ma secondo la documentazione, l'ordine corretto è quello di mettere per ultimo l'elenco dei file, ed è probabilmente una buona idea attenersi alla versione documentata delle cose.
Lily Ballard,

Grazie. L'ordine di questi messaggi è cambiato ... o almeno è cambiato il rigore dell'ordine;)
doublejosh

1
@DavidDimalanta: cosa intendi?
Lily Ballard,

1
@ihebiheb In questo momento non vedo altri parametri non-flag, git commitquindi immagino che la risposta sia "niente", ma in molti altri comandi git --distingue i percorsi dagli altri argomenti a forma libera (ad esempio, con git logil --impedisce a un percorso di invece viene interpretato come un intervallo di revisione)
Lily Ballard il


16

Se ti trovi nella cartella che contiene il file

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

1
se sono già nel file, ho bisogno di un "./" iniziale (punto forward-slash)? potrei usare git commit -m "my note" name_of_file.txt?
Chris22,

@ Chris22 Non sono sicuro di cosa intendi per "se sono già nel file" (forse intendevi "nella directory"?) ... ./è solo una sintassi normale del percorso, ma sì, non è necessario in questo esempio.
Jonathan Cross,

7

Usa l' -oopzione

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

-o, - commit solo i file specificati


Questa opzione non è necessaria. Se includi una pagina di file nel comando commit, eseguirà il commit solo di quei file.
doublejosh

Buono a sapersi se si desidera essere sicuri quando si scherza con altri parametri, ad esempio--amend
Tomas Varga,

5

Specifica il percorso dopo aver inserito il messaggio di commit, come:

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

4

Per git 1.9.5 su Windows 7: "my Notes" (virgolette doppie) ha corretto questo problema. Nel mio caso, inserire i file prima o dopo il -m 'messaggio'. non ha fatto differenza; usare le virgolette singole era il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.