Comment git valider un seul fichier / répertoire

216

J'ai essayé la commande suivante:

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

Recevez une erreur dans git version 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.

Cette syntaxe est-elle incorrecte pour les validations de fichiers ou de répertoires uniques?

RÉPONSE: Des arguments étaient attendus dans cet ordre ...

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

MISE À JOUR: ce n'est plus strict :)

doublejosh
la source
1
Êtes-vous sûr d'avoir la bonne version? Mise à jour vers 1.5.2.1? 1.5.2.1 a maintenant plus de 4 ans.
CB Bailey
Est-ce que quelque chose vous interdit de mettre à jour git?
Adam Dymitruk
BTW: Il s'agissait d'une machine virtuelle issue d'une ancienne recette. Git local était à jour, ne réalisait pas que cette version était ancienne. La rigueur a changé.
doublejosh

Réponses:

352

Vos arguments sont dans le mauvais ordre. Essayez git commit -m 'my notes' path/to/my/file.ext, ou si vous voulez être plus explicite, git commit -m 'my notes' -- path/to/my/file.ext.

Soit dit en passant, git v1.5.2.1 a 4,5 ans. Vous voudrez peut-être mettre à jour vers une version plus récente (1.7.8.3 est la version actuelle).

Lily Ballard
la source
2
Vous faites une bonne observation. Cependant, fait intéressant, Git 1.7.5.1 sur Windows accepte allègrementgit commit path_to_file -m 'message'
Sri Sankaran
@SriSankaran: On dirait qu'ils lui ont alors appris à reconnaître les arguments hors service. Mais selon la documentation, l'ordre correct est de mettre la liste des fichiers en dernier, et c'est probablement une bonne idée de s'en tenir à la version documentée des choses.
Lily Ballard
Merci. L'ordre de ces messages a changé ... ou du moins la rigueur de l'ordre a changé;)
doublejosh
1
@DavidDimalanta: Que voulez-vous dire?
Lily Ballard
1
@ihebiheb En ce moment, je ne vois aucun autre paramètre non indicateur, git commitdonc je suppose que la réponse est "rien", mais dans de nombreuses autres commandes git, le --chemin se distingue des autres arguments de forme libre (par exemple, avec git logle --empêche un chemin de étant interprété comme une plage de révision à la place)
Lily Ballard
87

Essayer:

git commit -m 'my notes' path/to/my/file.ext 
wadesworld
la source
16

Si vous êtes dans le dossier contenant le fichier

git commit -m 'my notes' ./name_of_file.ext
Piéthon
la source
1
si je suis déjà dans le fichier, ai-je besoin d'un "./" (point-barre oblique)? pourrais-je utiliser git commit -m "my note" name_of_file.txt?
Chris22
@ Chris22 Je ne sais pas ce que vous entendez par "si je suis déjà dans le fichier" (peut-être que vous vouliez dire "dans le répertoire"?) ... ./est juste une syntaxe de chemin normale, mais oui, pas nécessaire dans cet exemple.
Jonathan Cross
7

Utilisez l' -ooption.

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

-o, - ne valide que les fichiers spécifiés

W.Perrin
la source
Cette option n'est pas nécessaire. Si vous incluez une page de fichier dans votre commande commit, elle ne validera que ces fichiers.
doublejosh
Bon à savoir si vous voulez vous assurer lorsque vous jouez avec d'autres paramètres, par exemple--amend
Tomas Varga
5

Spécifiez le chemin après le message de validation entré, comme:

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

Pour git 1.9.5 sur Windows 7: "mes notes" (guillemets doubles) a corrigé ce problème. Dans mon cas, mettre le (s) fichier (s) avant ou après le -m 'message'. n'a fait aucune différence; l'utilisation de guillemets simples était le problème.

EddieBaby
la source