2013-03-06 3 views
0

Я пытаюсь откат всех моих коммитов и файлов на конкретную фиксацию. Я хочу избавиться от всех изменений, которые я сделал, и всех файлов, которые были созданы из этой конкретной фиксации.Файлы не восстановлены после сброса git --hard

Я попытался откате с помощью:

git checkout #commit_to_restore_to 
git reset --hard #commit_to_restore_to 

я получаю подтверждение, что HEAD is now at #commit_to_restore_to "Commit_message"

Однако мои файлы точно так же, как и раньше. Как я могу откат всех моих файлов?

Я нахожусь на Ubuntu 12.10.

Здесь больше информации:

$ git status 
<<fill this in>> 

# git diff --name-status #commit_to_restore_to #provide real commit number please. 
<<fill this in too>> 
+2

были ли эти файлы совершены? что говорит 'git status'? –

+0

@Fredrik это говорит # не в настоящее время ни на одной ветке. Ничего не зафиксировано (рабочий каталог чист) – nitochi

ответ

0

Я чувствую себя таким смущенным. Файлы менялись, проблема в том, что папки не были. Так как у моего .gitignore есть (например,) файлы pyc, папки, которые я создал post commit, все еще там, потому что у них были эти файлы. Я просто делал ls на диске и сошел с ума, потому что та же самая древовидная структура продолжала появляться.

Извините, что и спасибо!

0

Если вы checkout фиксации, то у вас есть содержимое вашего хранилища, как из этой фиксации в рабочем каталоге. Таким образом, нет ничего reset. Там будет что-то, если вы сделали вместо этого:

$ git checkout <commit> 
# muck with files; do some other git stuff 
$ git reset --hard <commit> 

В приведенном выше случае reset будет на самом деле что-то делать.

Похоже, что вы действительно хотите, чтобы забыть все после совершения и затем продолжить развитие. Если да, то это работает (предположим, что вы находитесь на master ветви):

$ git checkout -b tmp-branch <commit> 
$ git branch -d master 
$ git branch -m tmp-branch master 

и вы хотите быть осторожным с вышесказанным.

+0

Это не сработало ... предыдущие файлы по-прежнему там немодифицированы :( – nitochi

+0

В исходном вопросе разместите результат «git status». Также опубликуйте точные результаты «git diff - -name-status ' – GoZoner

1

Самый простой способ переписать филиальную реф является

git branch -f mastercommit

если вы на этой ветке в данный момент вы можете

git checkout -B mastercommit

+0

Это не восстанавливает мои файлы – nitochi

0

Осторожно! Когда вы сделали git checkout SHA, вы оказались на плавающей ветке. git status должен сказать что-то вроде:

# Not currently on any branch. 

Был также предупреждение от git checkout. Если вы хотите сбросить свою ветку master с git reset --hard SHA, вы хотите сначала вернуться к этой ветке с git checkout master.

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