Подтвердить что ты не робот

Как вы вернете файл git в его версию промежуточной области?

Скажем, у меня есть файл с именем a.txt. Я добавляю его в промежуточную область, а затем меняю. Как я могу вернуть его так, как я добавил?

4b9b3361

Ответ 1

git checkout a.txt

Git сообщает об этом, если вы наберете 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
#

Ответ 2

git checkout -- a.txt

В другом ответе на этой странице нет --, и это привело к некоторой путанице.

Это то, что сообщает Git при вводе 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
#

Ответ 3

Восстановление промежуточного файла

В следующих двух разделах показано, как работать с областью подготовки и изменениями рабочего каталога. Приятно то, что команда, которую вы используете для определения состояния этих двух областей, также напоминает вам, как отменить изменения в них. Например, предположим, что вы изменили два файла и хотите зафиксировать их как два отдельных изменения, но вы случайно набрали git add * и поставили их оба. Как вы можете отключить один из двух? Команда git status напоминает вам:

$ 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

Прямо под текстом "Изменения будут зафиксированы" написано, что используйте git reset HEAD... для удаления. Итак, давайте воспользуемся этим советом, чтобы удалить файл 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

Команда немного странная, но она работает. Файл CONTRIBUTING.md изменен, но еще раз не удален.