Восстановление сброса git --soft - PullRequest
10 голосов
/ 04 января 2011

Я изменил некоторые файлы в своей ветке и сделал

git add --all

Но это добавило некоторые файлы, которые я не собирался добавлять для фиксации.

Итак, я сделал

git reset --soft HEAD~2 (instead of doing git reset HEAD)

Но предыдущий коммит был сделан кем-то другим, и это привело к изменению / добавлению / удалению большого количества файлов. Есть ли способ вернуться к этапу, когда единственные изменения, которые я вижу, - это файлы, добавленные / измененные мной? Поскольку я не делал реальный коммит, есть ли способ вернуть мою голову мастеру, не срывая мои изменения? git pull вызывает конфликты слияния, поскольку я фактически не зафиксировал свои изменения.

Спасибо!

Ответы [ 3 ]

13 голосов
/ 04 января 2011

Для дальнейшего использования вы можете просмотреть коммиты, вызванные или оставленные вашим поведением, вызвав git reflog, который будет включать коммиты, которых больше нет в вашем рабочем дереве.

7 голосов
/ 04 января 2011

Просто сделай git reset master. Это только обновит индекс и на что указывает HEAD. Это не изменит ваши файлы рабочего дерева.

0 голосов
/ 16 ноября 2011

Визуальное решение: open git gui:

git gui

В нижней части поля Commit Message выберите переключатель с меткой Amend Last Commit . Слева вы увидите область Staged Changes . Он содержит файлы, которые вы добавили в последнем коммите. Нажмите на значки файлов, которые вы не хотите в своем коммите, чтобы удалить их из индекса. После этого просто подтвердите, нажав кнопку Commit .

...