2013-04-04 109 views
0

我创建了一个名为user-microposts的新分支。我着手创建一个模型。我试图要回最后一次提交使用:Git重置并删除分支没有正常恢复

git reset --hard cb166caa1c70004f77eed6229168b06ad249a4ba 

这给了回来:

HEAD is now at cb166ca Eliminate an unnecessary assignment 

所以,我想重做的迁移,这给了我这个错误:

SQLite3::SQLException: table "microposts" already exists: CREATE TABLE "microposts" 
.... 

我感到惊讶,因为我认为如果我回到以前的提交,这将是什么都没有发生。

所以我恢复到主分支,并删除了我做了任何更改的分支。

然后我创建了一个新分支,并尝试创建另一个模型并运行rake db:migrate。再次我得到了同样的错误

SQLite3::SQLException: table "microposts" already exists: CREATE TABLE "microposts" 
.... 

我最近试图手动删除任何文件与microposts在其中。再次没有这样的运气。

我不断收到相同的错误。我认为git分支和/或git reset的目的会阻止这种情况,所以我非常困惑。任何帮助,将不胜感激

+0

只是一个提示:重置分支时,使用相对名称,而不是绝对名称。如果你想回滚一个提交,请执行'git reset --hard HEAD ^'。如果你想回滚三次提交,请执行'git reset --hard HEAD〜3'。 – TheBuzzSaw 2013-04-04 15:13:47

+0

至于你的实际问题,是git跟踪你的SQLite数据库?这听起来好像不是。 – TheBuzzSaw 2013-04-04 15:16:15

回答

1

这将是不寻常的,你的数据库是源代码管理。因此,如果你恢复你的源代码,你可能会在数据库和源代码之间产生不一致。该解决方案有几个选项:

  1. 删除数据库并重新创建它
  2. 回滚数据库

匹配源对于上述两个你会使用典型的“耙分贝”键入命令。

+0

+1这个问题听起来不像是一个直接的混帐问题。 – TheBuzzSaw 2013-04-04 15:24:18

+1

我看到了 - 谢谢。我可以通过执行以下操作来实现它 - 首先输入:sqlite3 db/development.sqlite3 sqlite> drop table table_name; sqlite> .quit – 2013-04-04 15:24:47

+0

没错,那基本上是重新创建数据库。 – GoZoner 2013-04-04 15:29:04