回到之前的git提交

时间:2018-05-09 18:46:42

标签: ruby-on-rails git

我是Ruby on Rails的新手,最后开始学习git。

我试图按照教程进行操作,但是我遇到了一个障碍,意外地失去了一个步骤。所以,现在当我试图做一个" rails db:migrate"我收到了已存在列的错误消息,但我无法继续本教程。

我最后一次运行" git commit"我的分支,应用程序稳定。

我想让我的应用的本地版本回到我承诺的最后一个版本git。

我以前没有这样做过,怎么办呢?我已经查找了git文档,但是对此我不熟悉,它一直很混乱,而且我不想搞砸任何事情。

4 个答案:

答案 0 :(得分:0)

您的提交操作有多小心,有时您可能包含了您忘记包含在提交中或意外包含它们的文件,或者您可能在提交消息中提供了不完整的信息。在这种情况下,您可以使用 git commit 命令和 - 修改选项来重新提交上次提交。如果您只想更改提交消息,可以使用 modify -m 选项运行git commit。如果要在上次提交时添加或删除文件,可以先使用提交部分中前面提到的 git add git rm 命令进行分段。

答案 1 :(得分:0)

要通过git树移动,请使用git checkout <branch>命令。您可以使用git log检查上一个命令的哈希值。您可以使用它来转到先前的提交。

答案 2 :(得分:0)

您可能不需要回滚到之前的提交。只需更新您的迁移文件即可使用table_exists?和/或column_exists?指令。

如果您要创建一个全新的表格,请按以下方式使用:

class CreateSomeCoolThings < ActiveRecord::Migration
  def up
    unless table_exists?(:some_cool_things)
      create_table :some_cool_things do |t|
        ...
      end
    end
  end

  def down
    if table_exists?(:some_cool_things)
      drop_table :some_cool_things
    end
  end
end

如果您只是将新列添加到现有表中,则可以执行以下操作:

class AddSomeAttributeToWhatevers < ActiveRecord::Migration
  def up
    add_column :whatevers, :some_attribute, :string unless column_exists? :whatevers, :some_attribute
  end

  def down
    remove_column :whatevers, :some_attribute if column_exists? :whatevers, :some_attribute
  end
end

以这种方式保护您的迁移只是养成习惯的好习惯。

答案 3 :(得分:0)

看起来您在数据库上运行了迁移,这会创建您收到错误的列。
很可能您运行了迁移,但在生成迁移之前没有回滚并检出提交。

如果是你的情况,那么恢复到之前的提交将会出现相同的错误,因为你的数据库出错了。

要解决此问题,您需要手动删除该列并再次运行迁移。

运行迁移后,schema_migration文件将包含最新的迁移,并且应该在将来修复它(某种程度)。