2013-04-04 69 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