92 votes

Comment revenir à la version de la zone de transit d'un fichier git ?

Disons que j'ai un fichier nommé a.txt . Je l'ajoute à la zone de transit, puis je le modifie. Comment pourrais-je le remettre dans l'état où il était lorsque je l'ai ajouté ?

95voto

abyx Points 15304
  • Avant Git 2.23 : git checkout a.txt
  • A partir de Git 2.23 : git restore a.txt

Git vous le dit si vous tapez git status .

Avant Git 2.23 :

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#

A partir de Git 2.23 :

On branch master
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   a

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   a

3 votes

@Daenyth J'ai vérifié avant de poster, et vous pouvez voir que la sortie montre différentes façons de réinitialiser les fichiers dans différents états (staged vs. unstaged).

1 votes

@Daenyth -- vous pensez à 'git checkout branch-name path' ou 'git checkout HEAD path'.

0 votes

@William : Merci ! Cela a beaucoup plus de sens maintenant.

32voto

nonrectangular Points 598

git checkout -- a.txt

L'autre réponse sur cette page n'a pas la -- et a entraîné une certaine confusion.

C'est ce que Git vous dit lorsque vous tapez git status :

# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
# modified:   a
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified:   a
#

4 votes

Vous auriez mieux fait de nous dire la différence, au lieu de poster ce qui a déjà été cité auparavant.

0voto

Girish Rathi Points 41

Déstockage d'un fichier stocké

Les deux sections suivantes montrent comment travailler avec les modifications de votre zone de transit et de votre répertoire de travail. Ce qui est bien, c'est que la commande que vous utilisez pour déterminer l'état de ces deux zones vous rappelle également comment annuler les modifications qui y ont été apportées. Par exemple, disons que vous avez modifié deux fichiers et que vous voulez les livrer en tant que deux changements séparés, mais que vous tapez accidentellement git add * et les mettez tous les deux en scène. Comment pouvez-vous annuler l'un des deux ? La commande git status vous le rappelle :

$ git add *
$ git status

On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README
modified:   CONTRIBUTING.md

Juste en dessous du texte "Changes to be committed", il est dit d'utiliser git reset HEAD ... pour déstocker. Donc, utilisons ce conseil pour déstocker le fichier CONTRIBUTING.md :

$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M   CONTRIBUTING.md

$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)

renamed:    README.md -> README

Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified:   CONTRIBUTING.md

La commande est un peu étrange, mais elle fonctionne. Le fichier CONTRIBUTING.md est modifié mais une fois de plus non indexé.

-1voto

Devesh Agarwal Points 1

Git restore --staged filename

C'est la commande qui permet de déstocker un fichier après l'avoir ajouté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X