Dans svn, il est possible de faire svn revert ./*
dans lequel le répertoire en cours et UNIQUEMENT le répertoire en cours est rétabli.
Quel est le git équivalent à svn revert
dans lequel seul le répertoire courant est rétabli?
Je sais qu'il y a git reset --hard
, mais il annule tout et pas seulement le répertoire courant.
Comment pourrais-je rétablir uniquement le répertoire actuel dans git?
Comme le dit @vcsjones, la solution ici est git checkout
:
git checkout <refspec> -- path/to/directory # or path/to/file
où <refspec>
peut, par exemple, être HEAD
, c'est-à-dire le commit de travail courant. Notez que cette utilisation de la commande checkout
affectera l'arborescence de travail MAIS PAS L'INDEX.
git revert
est utilisé pour "annuler une validation", et par cela, il ne faut PAS comprendre que la validation disparaît de l'arborescence (cela ferait des ravages avec l'historique - si vous le souhaitez, regardez git rebase -i
). Un commit inversé consiste à appliquer, en sens inverse, toutes les modifications du commit données en argument à l'arborescence et à créer un nouveau commit avec les changements (avec un message de commit par défaut , que vous pouvez modifier).
Accédez au dossier que vous souhaitez rétablir et procédez comme suit:
git checkout -- .
Voir plus dans cette réponse: https://stackoverflow.com/a/16589534/207661
Quand j'étais git novice (et que j'avais peur du terminal), j'ai trouvé que le moyen le plus simple était de: