Скажем, у меня есть файл с именем a.txt
. Я добавляю его в промежуточную область, а затем меняю. Как я могу вернуть его так, как я добавил?
Как вы вернете файл git в его версию промежуточной области?
Ответ 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 изменен, но еще раз не удален.