Pourquoi git ne peut-il pas effectuer de réinitialisations matérielles / matérielles par chemin d’access?

$ git reset -- peut être réinitialisé par chemin.

Cependant, $ git reset (--hard|--soft) signalera une erreur comme ci-dessous:

 Cannot do hard|soft reset with paths. 

Parce qu’il n’y a pas de point (d’autres commandes fournissent déjà cette fonctionnalité), et cela réduit le risque de faire la mauvaise chose par accident.

Un “hard reset” pour un chemin est juste fait avec git checkout HEAD -- (en vérifiant la version existante du fichier).

Une réinitialisation logicielle pour un chemin n’a pas de sens.

Une réinitialisation mixte pour un chemin est ce que git reset -- fait.

Vous pouvez accomplir ce que vous essayez de faire en utilisant git checkout HEAD .

Cela dit, le message d’erreur fourni n’a aucun sens pour moi (comme git reset fonctionne bien sur les sous-répertoires), et je ne vois aucune raison pour laquelle git reset --hard ne devrait pas faire exactement ce que vous lui demandez.

La question de savoir comment on a déjà répondu , je vais vous expliquer pourquoi .

Alors, que fait git reset ? Selon les parameters spécifiés, il peut faire deux choses différentes:

  • Si vous spécifiez un chemin, il remplace les fichiers correspondants dans l’index par les fichiers d’un commit (HEAD par défaut). Cette action n’affecte pas du tout l’arbre de travail et est généralement utilisée à l’opposé de git add.

  • Si vous ne spécifiez pas de chemin, il déplace l’en-tête de twig en cours vers un commit spécifié et, avec cela , réinitialise éventuellement l’index et l’arborescence de travail à l’état de ce commit. Ce comportement supplémentaire est contrôlé par le paramètre mode:
    –soft : ne touchez pas l’index ni l’arbre de travail.
    –mixed (par défaut): réinitialise l’index mais pas l’arbre de travail.
    –hard : réinitialise l’index et l’arborescence de travail.
    Il existe également d’autres options, consultez la documentation pour la liste complète et certains cas d’utilisation.

    Lorsque vous ne spécifiez pas de commit, la valeur par défaut est HEAD, donc git reset --soft ne fera rien, car il s’agit d’une commande pour déplacer la tête sur HEAD (dans son état actuel). git reset --hard part, a du sens en raison de ses effets secondaires , il est dit de déplacer la tête pour HEAD et de réinitialiser l’index et l’arbre de travail à HEAD.

    Je pense qu’il devrait être clair maintenant que cette opération n’est pas pour des fichiers spécifiques par nature – il est destiné à déplacer une twig en premier lieu, en réinitialisant l’arborescence de travail et l’index est une fonctionnalité secondaire.

git reset –soft HEAD ~ 1 nom_fichier annule la validation mais les modifications restnt en local. Le nom de fichier pourrait être – pour tous les fichiers validés