2013-11-01 3 views
1

Так что я клонировал репо из Github, и я испортил попытку его создания, добавив новые файлы и внеся изменения в существующие файлы в репо. У меня нет никаких коммитов и никогда ничего не устраивал. Как вернуться к чистой ветке мастера (что означает фактические локальные файлы на моем ПК) клона?Как избавиться от новых файлов и изменений файлов в Git

Если я не использовал команды git, я бы удалил локальные файлы с диска и просто повторно загрузил/клонировал репо. Однако я считаю, что с Git должен быть простой способ сделать это. Я никогда не сталкивался со своими настройками Git, поэтому статус git по-прежнему перечисляет все необработанные файлы и списки изменений, но я не хочу вручную проверять каждый файл один за другим, а затем вручную удалять каждый не проверенный файл один за другим.

+1

Связанный: [git reset --hard HEAD оставляет файлы без следа] (http://stackoverflow.com/questions/4327708/git-reset-hard-head-leaves-untracked-files-behind) – Ajedi32

+0

Да, это почему вам также нужно использовать чистую команду. – user1086516

ответ

5
git reset --hard # This resets all tracked files to default state 
git clean -fd # this clears working directory of all untracked files 

Это может быть очевидно, но используйте эти команды с осторожностью. Они являются разрушительными и будут удалять вашу работу, не спрашивая.

git reset сбрасывает текущую HEAD в состояние по умолчанию. --hard указывает жесткий режим , который удаляет все изменения. Вы также можете использовать его с режимом --soft , который просто сбрасывает все остальное на указанный фиксатор, но сохраняет все ваши изменения и --mixed, что делает все ваши изменения неустановленными. Однако эта команда работает только с отслеживаемыми файлами.

git clean очищает папку неиспользуемых файлов. -d позволяет работать с каталогами (обратите внимание, что git только отслеживает файлы - он не заметил, что папки существуют, если вы не вставляете в них что-то), а -f вариант - это простой плавкий предохранитель - он не будет работать без него (если только ваше репо не настроено). Однако эта команда все еще игнорирует файлы, указанные в .gitignore, если вы не добавите флаг -x.

+0

Отлично, именно то, что я искал. – user1086516

0
git reset --hard HEAD 

HEAD -> относится к фиксации, что вы начали, прежде чем вы начали вносить изменения (как Саймон указывает в комментариях, это последний коммит, который был извлечен).

reset --hard -> изменяет файлы в рабочем каталоге, чтобы соответствовать этой фиксации, без учета каких-либо изменений, которые в настоящее время существует

Вы также можете использовать reset --hard для перехода к различным фиксациям, тегам, или ветви, делая git reset --hard branch-name

+0

HEAD относится к последнему фиксации чека –

+0

Я думаю, что HEAD не обязательно в этом случае. –

+0

Это не так, но я считаю, что это немного более декларативно для кого-то, кто просто учится. –

0

Довольно просто: git reset --hard

Возможно, вам потребуется удалить файл вручную.

0

удалить все локальные изменения

git checkout -- . 

если вы добавили файлы, которые вы хотите удалить слишком

git clean 

Я предлагаю использовать githug, чтобы начать обучение мерзавец, это делает обучение более игры

https://github.com/Gazler/githug

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