Какие шаги я могу сделать, чтобы перезапустить чисто из предыдущего прекрасно работающего дерева проверки 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.
Итак, мои вопросы:
- Какую команду git использовать, чтобы сделать чистый переход к предыдущему коммиту?
- Как узнать, какие новые файлы созданы, чтобы я мог их удалить? Или я должен зафиксировать текущие нерабочие коды и затем вернуться назад?
- Как я могу сделать четкий переход к предыдущим миграциям, когда я не знаю, сколько шагов можно вернуться, используя
rake db:rollback STEP=3
? Или есть какая-нибудь команда типа git status
, которая может перечислить все мои предыдущие миграции и их имена?
- Мне не хватает чего-то еще, что я должен учитывать при переходе к моему предыдущему рабочему git commit и начинать все заново?
Большое спасибо! И с ответами я перечислю шаги здесь!
Шаги для создания чистого начала из предыдущей проверки git:
- git reset --hard HEAD ^ #hard reset
- git clean -f # удалить все новые файлы
- rake db: migrate