Jak zatwierdzić pojedynczy plik / katalog

216

Próbowałem następującego polecenia:

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

Otrzymaj błąd w wersji 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.

Czy to niepoprawna składnia zatwierdzeń dla pojedynczego pliku lub katalogu?

Odpowiedź: Argumenty były oczekiwane w tym celu ...

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

AKTUALIZACJA: to już nie jest ścisłe :)

doublejosh
źródło
1
Czy na pewno masz poprawną wersję? Uaktualniasz do wersji 1.5.2.1? 1.5.2.1 ma już ponad 4 lata.
CB Bailey,
Czy coś zabrania ci aktualizacji gita?
Adam Dymitruk
BTW: To była maszyna wirtualna wyodrębniona ze starej receptury. Lokalny Git był aktualny, nie zdawałem sobie sprawy, że ta wersja była starożytna. Surowość się zmieniła.
doublejosh,

Odpowiedzi:

352

Twoje argumenty są w niewłaściwej kolejności. Spróbuj git commit -m 'my notes' path/to/my/file.ext, a jeśli chcesz być bardziej wyraźne, git commit -m 'my notes' -- path/to/my/file.ext.

Nawiasem mówiąc, git v1.5.2.1 ma 4,5 lat. Możesz chcieć zaktualizować do nowszej wersji (1.7.8.3 to aktualna wersja).

Lily Ballard
źródło
2
Robisz dobrą obserwację. Jednak, co ciekawe, Git 1.7.5.1 na Windows beztrosko przyjmujegit commit path_to_file -m 'message'
Sri Sankaran
@SriSankaran: Wygląda na to, że nauczyli go wtedy rozpoznawać argumenty niezgodne z kolejnością. Ale zgodnie z dokumentacją prawidłową kolejnością jest umieszczenie listy plików na końcu i prawdopodobnie dobrym pomysłem jest trzymanie się udokumentowanej wersji rzeczy.
Lily Ballard
Dzięki. Kolejność tych wiadomości się zmieniła ... lub przynajmniej zmieniła się surowość zamówienia;)
doublejosh
1
@DavidDimalanta: Co masz na myśli?
Lily Ballard
1
@ ihebiheb W tej chwili nie widzę żadnych innych parametrów niebędących flagami, git commitwięc myślę, że odpowiedź brzmi „nic”, ale w wielu innych poleceniach git --odróżnia ścieżki od innych dowolnych argumentów (na przykład za git logpomocą --zapobiega ścieżce od interpretowane jako zakres wersji zamiast)
Lily Ballard,
87

Próbować:

git commit -m 'my notes' path/to/my/file.ext 
wadesworld
źródło
16

Jeśli znajdujesz się w folderze zawierającym plik

git commit -m 'my notes' ./name_of_file.ext
Piethon
źródło
1
jeśli jestem już w pliku, czy potrzebuję wiodącego „./” (kropka-ukośnik)? czy mogę użyć git commit -m "my note" name_of_file.txt?
Chris22
@ Chris22 Nie jestem pewien, co masz na myśli, mówiąc „jeśli jestem już w pliku” (może miałeś na myśli „w katalogu”?) ... ./To tylko zwykła składnia ścieżki, ale tak, nie jest to konieczne w tym przykładzie.
Jonathan Cross
7

Użyj -oopcji.

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

-o, - zatwierdzaj tylko określone pliki

W.Perrin
źródło
Ta opcja nie jest konieczna. Jeśli w poleceniu commit umieścisz stronę pliku, zatwierdzone zostaną tylko te pliki.
doublejosh
Dobrze wiedzieć, czy chcesz mieć pewność, że zadzierasz z innymi parametrami, np.--amend
Tomas Varga
5

Podaj ścieżkę po wprowadzonym komunikacie zatwierdzenia, na przykład:

git commit -m "commit message" path/to/file.extention
Rahul TP
źródło
4

W przypadku gita 1.9.5 w systemie Windows 7: „moje notatki” (podwójne cudzysłowy) rozwiązały ten problem. W moim przypadku umieszczenie pliku (ów) przed lub po „-m” wiadomości. nie zrobił różnicy; problem polegał na użyciu pojedynczych cudzysłowów.

EddieBaby
źródło