Git: как откат до последнего нажатия/фиксации

Я программирую. Я добавляю красивый код и фиксирую его и нажимаю на свое репо:

git add *
git commit
//writes message
git push unfuddle master

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

git pull говорит, что мое местное репо "обновлено"

git checkout отскакивает мой экран и, похоже, ничего не меняет.

Чтобы быть ясным: я не пытаюсь изменить мое удаленное репо, просто заставьте мое местное репо выглядеть как сервер.

Мое текущее решение - удалить папку и отменить репо. Это не может быть правильно.

Ответ 1

Вы можете reset в HEAD: git reset --hard HEAD

Ответ 2

UPDATE:

Лучший способ сделать это -

git stash -u

Не

git reset --hard HEAD

это операция, которая не может быть отменена, и вы действительно можете уничтожить свою работу, если вы не используете машину времени на Mac или новую службу резервного копирования в Windows 8. У Linux может быть такая схема, хотя я не использую один.

Если вы также хотите, чтобы проигнорированные файлы были nuked, вы можете

git clean -xdf

Ответ 3

git pull говорит, что мое местное репо "обновлено"

git pull сообщает вам, что ваш репозиторий обновлен, потому что ваш локальный репозиторий и ваш удаленный репозиторий указывают на то же HEAD (последнее коммит). Это связано с вашим git push, который синхронизировал пульт с вашим местным репозиторием.

git не сравнивает изменения, которые не были переданы удаленной ветке, когда он решает, что вытащить; таким образом, с точки зрения Gits, локальные и удаленные репозитории находятся в один и тот же момент времени, даже если ваш локальный репозиторий имеет неустановленные изменения (изменения, которые у вас не были git add ed).

В нижней части этой страницы есть хорошая диаграмма, в которой показано, как работает процесс - вы вносили некоторые изменения, ставили их (запуская git add), а затем, наконец, передать их в репозиторий (через креативно называемый git commit).

Чтобы быть ясным: я не пытаюсь изменить мое удаленное репо, просто заставьте мое местное репо выглядеть как сервер.

Другие указали методы для этого: git reset --hard HEAD (reset индекс [поэтапные файлы] и рабочее дерево [неустановленные файлы] до последнего фиксации), но стоит понять, чего вы пытаетесь достичь - если бы я знал, как git отслеживал мои файлы в первый раз, когда я испортил свое рабочее дерево, я бы сэкономил много времени.

Ответ 4

Поскольку вы еще ничего не совершили, следующая команда будет reset измененными вами файлами:

git checkout .

Ответ 5

вы можете попробовать

git stash
git pull origin your-branch

Ответ 6

Вы попробовали git checkout -f master?

Ответ 7

Если вы ничего не совершили, вы можете просто сделать $ git reset --hard. Если вы сделали некоторые вещи, вы можете сделать git reset --hard origin/master, чтобы вернуться к версии, находящейся на пульте дистанционного управления.

Ответ 8

git checkout branchname git reset --hard c4e0424 git push origin +branchname

Вы можете использовать -soft вместо --hard
--hard вы потеряете свои изменения
--soft оставить ваши измененные файлы фиксации