Отменить git checkout - - PullRequest
       30

Отменить git checkout -

0 голосов
/ 26 апреля 2019

Я сначала извлекаю ветку из функциональной ветви.

git checkout -b MyBranch

Внесены некоторые изменения в этой ветке. Добавлены все файлы. Затем я перешел в тематическую ветку. Все мои поэтапные изменения присутствуют в ветке функций. Тогда я сделал:

git checkout -- <Staged File>

Затем я перешел в свою ветку. Я не вижу свой подготовленный файл в MyBranch.

Можно ли как-нибудь восстановить мой подготовленный файл?

1 Ответ

1 голос
/ 27 апреля 2019

К сожалению, ваши незафиксированные изменения в файле будут потеряны, если я правильно понимаю вашу ситуацию.

Команда git checkout -- [file] возвращает все незафиксированные изменения, внесенные в файл.Он меняет свою версию на версию последнего коммита в текущей ветви.

Вы говорите, что больше не видите файл.Если файл не существует в последнем коммите вашей ветки, это странно (и вы должны прочитать этот ответ ).Но если вы уверены, что он существует в удаленной ветви, есть способ вернуть его:

git checkout HEAD -- [file]

Это сбрасывает версию файла и его состояние в индексе.

Предотвращение этого в будущем

Итак, у вас есть некоторые изменения в файлах, но вы хотите применить их в другой ветви или коммите, прежде чем делать коммит.Для этого вы можете использовать [git stash][1].Как сказано в документации:

Используйте git stash, когда вы хотите записать текущее состояние рабочего каталога и индекса, но хотите вернуться в чистый рабочий каталог.

В вашем случае это будет означать:

  1. Внести изменения в файлы
  2. Добавить файлы: git add [your-files-or-parameter]
  3. Сохранить файлы: git stash
  4. Переключиться на ветвь объекта: git checkout [feature-branch]
  5. Применить ваши спрятанные изменения: git stash apply

Теперь ваши изменения применяются поверх состояния ветви объекта.

Обратите внимание, что git stash apply оставляет запись тайника в индексе хранения, что означает, что после его применения она все еще хранится там.Вы можете использовать git stash pop для применения и удаления тайника, но я считаю полезным, чтобы вы могли сбросить и повторить переключение без потери изменений, если что-то пойдет не так.

...