【问题标题】:Deleted github branch. but rails generated controllers remained in Master?删除了 github 分支。但是 Rails 生成的控制器仍然在 Master 中?
【发布时间】:2016-06-28 16:45:13
【问题描述】:

我对编程有点陌生。我可能没有输入正确的关键字,但我找不到任何可以回答这个问题的东西。 GitHub 教程也没有涵盖这一点(据我所知)。

所以安装了 rails Device gem,一切运行良好。扩展到用户注册邮件。我决定尝试使用设备控制器。所以我 $ rails 生成设计:控制器确认。

我在那里做了一些事情,完全搞砸了我的应用程序。无论如何,我决定删除分支。我使用 $ git branch -D user-sign-up-mailer 签出到 master 并删除了分支

令我惊讶的是,我在分支中生成的控制器在我的主控器中。现在我觉得我必须扭转这一点..但我的问题是做错了什么?为什么这些控制器是从master来的?这是来自终端的流程

那么我如何扭转这种情况并仅销毁设备控制器?

Mac (user-sign-up-mailer) $ rails generate devise:controllers confirmations
Running via Spring preloader in process 19574
      create  app/controllers/confirmations/confirmations_controller.rb
      create  app/controllers/confirmations/passwords_controller.rb
      create  app/controllers/confirmations/registrations_controller.rb
      create  app/controllers/confirmations/sessions_controller.rb
      create  app/controllers/confirmations/unlocks_controller.rb
      create  app/controllers/confirmations/omniauth_callbacks_controller.rb

如果您还没有,您必须手动进行一些设置:

确保您在 routes.rb 中为生成的控制器覆盖了路由。 例如:

Rails.application.routes.draw do
  devise_for :users, controllers: {
    sessions: 'users/sessions'
  }
end

Mac (user-sign-up-mailer) $ git branch -D user-sign-up-mailer
error: Cannot delete the branch 'user-sign-up-mailer' which you are currently on.
Mac (user-sign-up-mailer) $ git checkout master
M   app/models/user.rb
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
Mac (master) $ git branch -D user-sign-up-mailer
Deleted branch user-sign-up-mailer (was bdd7590).
Mac (master) $ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   app/models/user.rb

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    app/controllers/confirmations/

no changes added to commit (use "git add" and/or "git commit -a")
Mac (master) $ 

【问题讨论】:

    标签: ruby-on-rails ruby git github devise


    【解决方案1】:

    从外观上看,您从未将文件添加或提交到您的分支。这意味着 git 不知道它们。这就是为什么他们仍然在您的 master 分支上。

    您应该可以删除任何列为未跟踪的文件,然后您可以通过$ git reset --hard 删除自上次提交更改以来的任何更改。

    【讨论】:

      【解决方案2】:

      您可以通过将“generate”替换为“destroy”来销毁您生成的任何内容,如下所示:

      rails destroy devise:controllers confirmations
      

      另外,这个site 在我开始使用 Git 时帮助了我很多。合并更改后切换回主分支时,请务必进行硬重置(替换本地更改)。

      【讨论】:

        猜你喜欢
        • 2017-08-20
        • 2013-07-07
        • 2016-11-25
        • 2020-05-06
        • 2021-04-18
        • 2017-07-15
        • 2017-03-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多