Wie man eine einzelne Datei / ein einzelnes Verzeichnis festschreibt

216

Versuchte den folgenden Befehl:

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

In git Version 1.5.2.1 wird ein Fehler angezeigt:

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.

Ist das eine falsche Syntax für einzelne Datei- oder Verzeichnis-Commits?

ANTWORT: Argumente wurden in dieser Reihenfolge erwartet ...

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

UPDATE: es ist nicht mehr streng :)

Doublejosh
quelle
1
Sind Sie sicher, dass Ihre Version korrekt ist? Aktualisierung auf 1.5.2.1? 1.5.2.1 ist jetzt über 4 Jahre alt.
CB Bailey
Verbietet Ihnen irgendetwas, Git zu aktualisieren?
Adam Dymitruk
Übrigens: Dies war eine VM, die nach einem alten Rezept erstellt wurde. Local Git war auf dem neuesten Stand, wusste nicht, dass diese Version uralt war. Die Strenge hat sich geändert.
DoubleJosh

Antworten:

352

Ihre Argumente sind in der falschen Reihenfolge. Versuchen Sie es git commit -m 'my notes' path/to/my/file.ext, oder wenn Sie expliziter sein möchten git commit -m 'my notes' -- path/to/my/file.ext.

Git v1.5.2.1 ist übrigens 4,5 Jahre alt. Möglicherweise möchten Sie auf eine neuere Version aktualisieren (1.7.8.3 ist die aktuelle Version).

Lily Ballard
quelle
2
Sie machen eine gute Beobachtung. Interessanterweise akzeptiert Git 1.7.5.1 unter Windows freudlosgit commit path_to_file -m 'message'
Sri Sankaran
@SriSankaran: Klingt so, als hätten sie es gelehrt, Argumente außerhalb der Reihenfolge zu erkennen. Laut Dokumentation ist es jedoch richtig, die Dateiliste an die letzte Stelle zu setzen, und es ist wahrscheinlich eine gute Idee, sich an die dokumentierte Version der Dinge zu halten.
Lily Ballard
Vielen Dank. Die Reihenfolge dieser Nachrichten hat sich geändert ... oder zumindest die Strenge der Reihenfolge geändert;)
doublejosh
1
@ DavidDimalanta: Was meinst du?
Lily Ballard
1
@ihebiheb Im Moment sehe ich keine anderen Nicht-Flag-Parameter, git commitdaher denke ich, dass die Antwort "nichts" ist, aber in vielen anderen git-Befehlen --unterscheidet das Pfade von anderen Freiform-Argumenten (zum Beispiel mit git logdem --verhindert , dass ein Pfad von wird stattdessen als Revisionsbereich interpretiert)
Lily Ballard
87

Versuchen:

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

Wenn Sie sich in dem Ordner befinden, der die Datei enthält

git commit -m 'my notes' ./name_of_file.ext
Piethon
quelle
1
Wenn ich bereits in der Datei bin, benötige ich ein führendes "./" (Schrägstrich)? könnte ich verwenden git commit -m "my note" name_of_file.txt?
Chris22
@ Chris22 Ich bin mir nicht sicher, was du mit "wenn ich schon in der Datei bin" meinst (vielleicht meinst du "im Verzeichnis"?) ... ./ist nur normale Pfadsyntax, aber ja, in diesem Beispiel nicht notwendig.
Jonathan Cross
7

Verwenden Sie die -oOption.

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

-o, - nur bestimmte Dateien festschreiben

W.Perrin
quelle
Diese Option ist nicht erforderlich. Wenn Sie eine Dateiseite in Ihren Festschreibungsbefehl aufnehmen, werden nur diese Dateien festgeschrieben.
DoubleJosh
Gut zu wissen, ob Sie sicherstellen möchten, wenn Sie mit weiteren Parametern spielen, z. B.--amend
Tomas Varga
5

Geben Sie den Pfad nach der eingegebenen Festschreibungsnachricht an, z.

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

Für Git 1.9.5 unter Windows 7: "Meine Notizen" (doppelte Anführungszeichen) haben dieses Problem behoben. In meinem Fall die Datei (en) vor oder nach der -m 'Nachricht' platzieren. machte keinen Unterschied; Die Verwendung einfacher Anführungszeichen war das Problem.

EddieBaby
quelle