Как правильно начать заново с предыдущей проверки Git, с правильными файлами и миграциями в Rails 3 - PullRequest
2 голосов
/ 23 мая 2011

Какие шаги я могу сделать, чтобы перезапустить чисто из предыдущего прекрасно работающего дерева проверки Git со всеми старыми файлами (новые файлы удалены), исправить миграции (новые таблицы / миграции удалены) и т. Д.?

Вот ситуация. Я изучаю Rails и пару раз запутался и, следовательно, я сделал git checkout -f (без фиксации чего-либо), чтобы чисто начать с этого прекрасно работающего кода. Однако я обнаружил, что вновь созданные файлы остались, и мне пришлось удалить их вручную, и rake db:migrate имел ошибки, говорящие о том, что таблицы уже существуют.

Вот некоторые из моих ошибок:

Sayanee:depot sweska$ rake db:migrate
(in /Applications/XAMPP/xamppfiles/htdocs/rails_projects/TUTORIALS/depot)
==  CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:

SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "hashed_password" varchar(255), "salt" varchar(255), "created_at" datetime, "updated_at" datetime) 

(See full trace by running task with --trace)
Sayanee:depot sweska$ rake db:reset
(in /Applications/XAMPP/xamppfiles/htdocs/rails_projects/TUTORIALS/depot)
db/test.sqlite3 already exists
db/test.sqlite3 already exists
db/development.sqlite3 already exists
-- create_table("carts", {:force=>true})
   -> 0.0033s
-- create_table("line_items", {:force=>true})
   -> 0.0172s
-- create_table("orders", {:force=>true})
   -> 0.0032s
-- create_table("products", {:force=>true})
   -> 0.0030s
-- create_table("users", {:force=>true})
   -> 0.0049s
-- initialize_schema_migrations_table()
   -> 0.0095s
-- assume_migrated_upto_version(20110522103119, "db/migrate")
   -> 0.0153s
You have 1 pending migrations:
  20110523004950 CreateUsers
Run "rake db:migrate" to update your database then try again.

Итак, мои вопросы:

  1. Какую команду git использовать, чтобы сделать чистый переход к предыдущему коммиту?
  2. Как узнать, какие новые файлы созданы, чтобы я мог их удалить? Или я должен зафиксировать текущие нерабочие коды и затем вернуться назад?
  3. Как я могу сделать четкий переход к предыдущим миграциям, когда я не знаю, сколько шагов можно вернуться, используя rake db:rollback STEP=3? Или есть какая-нибудь команда типа git status, которая может перечислить все мои предыдущие миграции и их имена?
  4. Мне не хватает чего-то еще, что я должен учитывать при переходе к моему предыдущему рабочему git commit и начинать все заново?

Большое спасибо! И с ответами я перечислю шаги здесь!

Шаги для создания чистого начала из предыдущей проверки git:

  1. git reset --hard HEAD ^ #hard reset
  2. git clean -f # удалить все новые файлы
  3. rake db: migrate

1 Ответ

7 голосов
/ 23 мая 2011

Вы всегда можете сбросить свой коммит на предыдущий.

git reset --hard HEAD^

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

Для получения дополнительной информации в документации по git reset есть несколько хорошо написанных примеров:

http://git -scm.com / документы / ГИТ-сброс

Поскольку ваше приложение rails создает файл базы данных sqlite, сброс текущего дерева в предыдущее состояние не приведет к удалению неотслеживаемых файлов. Чтобы удалить эти неотслеживаемые файлы (ваша база данных sqlite), вы можете удалить этот файл базы данных sqlite. Если вы хотите очистить все дерево, вы можете запустить:

git clean -f

Сброс и очистка вашего рабочего дерева git вернет его в состояние, в котором вы изначально были извлечены при этом конкретном коммите.

Надеюсь, это поможет!

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