Я хочу вернуться к резервной копии моего приложения - PullRequest
0 голосов
/ 02 марта 2012

Я исследовал эту тему, но боюсь, что у меня слишком мало опыта работы с Git, и, возможно, я испытываю больше проблем, пробуя разные вещи, поэтому я пишу, чтобы узнать, как лучше вернуться к предыдущему состоянию моего приложения. .

Я зафиксировал изменения и удалил предыдущие ветки, но не раньше, чем я создал резервную копию приложения локально на внешнем диске.

Все работало нормально (функционально), о чем свидетельствует мое развертывание в Heroku, которое все еще работает, до моих последних изменений.

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

Итак, так как все пошло не так, я решил скопировать резервную копию приложения и запустить новое ... но это не сработало.

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

Можете ли вы помочь ???

Я работаю на рельсах 3.2, ruby ​​1.9.3, git 1.7.4.4

Обновление


Я использовал git reset --hard HEAD и теперь терминал говорит мне HEAD теперь на 820f417 микро.

У меня проблемы:

Я не знаю, как это может или не может изменить файлы, которые я отредактировал внутри textmate и сохранил на жесткий диск.

Когда я открываю приложение в браузере, я получаю сообщение об ошибке:

ActiveRecord::StatementInvalid in StaticPagesController#home

Could not find table 'users'

Трассировка: app / helpers / session_helper.rb: 46: в user_from_remember_token' app/helpers/sessions_helper.rb:16:in current_user ' app / helpers / session_helper.rb: 9: в signed_in?' app/controllers/static_pages_controller.rb:4:in home '

Ответы [ 3 ]

2 голосов
/ 02 марта 2012

Возврат коммитов описан в Git Book :

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

Вот пример:

Вот файл после четырех ревизий. Только первые три были совершены.

> cat file
This is revision 4

Получить статус:

> git status
# On branch master
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   file
#
no changes added to commit (use "git add" and/or "git commit -a")

Возврат к последней подтвержденной версии:

> git reset --hard HEAD
HEAD is now at e0d512a Revision 3

Посмотрите на файл:

> cat file
This is revision 3

Вернуть последний коммит:

> git revert HEAD
Finished one revert.
[master 92a575c] Revert "Revision 3"
 1 files changed, 1 insertions(+), 1 deletions(-)

Посмотрите на файл:

> cat file
This is revision 2

Просмотр истории изменений:

> git log
commit 92a575c481c69fc1dd809ba02a63009141f95b96
Date:   Fri Mar 2 17:13:36 2012 +1100

    Revert "Revision 3"

    This reverts commit e0d512acebbfb3891888dc59074f7d1f0748bba6.

commit e0d512acebbfb3891888dc59074f7d1f0748bba6
Date:   Fri Mar 2 17:11:25 2012 +1100

    Revision 3

commit efc6d5af434c56991dabee43f36bc6e7ff284da7
Date:   Fri Mar 2 17:11:01 2012 +1100

    Revision 2

commit 8b73c59bb517df2589dcd0285a6d19045882ad8e
Date:   Fri Mar 2 17:10:20 2012 +1100

    Revision 1
>
1 голос
/ 02 марта 2012

Если вам известен хэш SHA коммита, к которому вы хотите восстановить рабочее дерево, вы можете использовать git checkout <commit> --, чтобы получить указанный коммит в вашей текущей ветке.

Если вы хотите увидеть разницу в содержании ваших файлов, вы можете использовать команду git diff. Если вы хотите сравнить ваше рабочее дерево с тем, что находится в HEAD вашей ветви (последний коммит), используйте git diff HEAD. Если вы хотите увидеть разницу в конкретных файлах, перечислите эти файлы в конце команды diff. Вы можете использовать git diff для сравнения с внешними файлами, однако вам, вероятно, следует сосредоточиться на том, чтобы определить, имеет ли ваш репозиторий коммит, содержащий необходимый вам статус репозитория, прежде чем просматривать внешние резервные копии.

0 голосов
/ 02 марта 2012

Когда я хочу выбросить свои последние изменения в зафиксированный файл, произнесите A.cpp.

Я использую git checkout -- A.cpp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...