2012-02-17 3 views
11

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

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

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

git pull говорит мой местный репо «до даты»

git checkout Spams, что мой экран и не кажется, что изменить что-либо.

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

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

ответ

13

можно сбросить до РУКОВОДИТЕЛЯ: git reset --hard HEAD

+0

'git stash' Я нашел и делает то, что хочу. – Mikey

+1

уверен, вы также можете использовать последнюю резервную копию на жестком диске, чтобы добраться туда :) – three

7

UPDATE:

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

git stash -u 

Не

git reset --hard HEAD 

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

Если вы хотите игнорируемые файлы сбросили атомную бомбу, вы можете

git clean -xdf 
0

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

3

мерзавец тянуть говорит мой местный репо «до даты»

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

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

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

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

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

2

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

git checkout . 
2

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

git stash 
git pull origin your-branch 
0

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

Вы можете использовать --Мягкие вместо --hard
--hard ВАШИ ПОТЕРЯТЬ
--soft Оставьте свои измененные файлы с фиксацией

Смежные вопросы