ruby-on-rails - 我需要对生产应用修补程序,但我没有创建分支,我该怎么办?

标签 ruby-on-rails git heroku

我开始在没有分支的情况下处理代码中的一系列新功能。

这些新功能尚未准备好部署。但是,已收到紧急请求以解决不同的问题。

我想回到开始添加新功能之前的版本,在那里应用修复,然后部署。

但是,我很困惑哪个应该成为一个分支,哪个版本应该 merge 到哪个版本。

有人可以为我提供这个问题的解决方案,作为一步一步的 git 过程来完成这个问题。

请注意,我从未在源代码管理上进行过分支(现在我明白为什么我应该这样做了)!

最佳答案

这是一种方法,可能还有更简单的方法。这还假设您所做的更改仅在您的机器上本地进行,而不会推送到任何远程分支。

假设我们有

           master
             |
A - B - C' - D'

C'D' 标记提交了您不想部署的新功能。

首先,在当前提交处创建一个新分支(master):

git branch new_feature

现在我们必须指向提交 D'masternew_feature 的指针。这对于不要丢失您已经完成的任何更改很重要。

           master
             |
A - B - C' - D'
             |
        new_feature

现在我们要将 master 分支重置为没有新功能的状态,即提交 B 我们可以使用 git reset --hard.
重要:如果此时您有未提交的更改,它们将会丢失。我建议阅读 this excellent article about git reset ,了解它真正在做什么。

git reset --hard B

结构现在看起来像:

   master
    |
A - B - C' - D'
             |
        new_feature

master 分支上,您现在可以进行修补程序更改(提交 E)并将它们推送到 heroku:

      master
        |
A - B - E
     \
      C' - D'
           |
       new_feature

然后您可以将修补程序 merge 到 new_feature 分支中,或者只是将其 rebase 到修补程序之上:

git rebase master new_feature

结果是:

      master
        |
A - B - E
         \
          C' - D'
               |
          new_feature

Pro Git 这本书是学习 Git 的好资源,而且是免费的:http://git-scm.com/book .

关于ruby-on-rails - 我需要对生产应用修补程序,但我没有创建分支,我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15598141/

相关文章:

java - 为什么 Intellij 在多模块 git 项目中显示 'ghost' 更改?

bash - 如何在已部署的 Heroku 应用程序上查看文件和文件结构

tomcat - Heroku Java Tomcat ServletContextListener 不在 slugc 或重启时调用 contextDestroyed

ruby-on-rails - Rails 提前一个月到二月有时会失败

ruby-on-rails - delayed_job : One job per tenant at a time?

git - 创建本地git仓库时出现异常-Openshift

ruby-on-rails - Rails.application.routes.url_helpers 使 Heroku 应用程序崩溃

css - 在运行时重新编译 Rails sass 和 css Assets

ruby-on-rails - 如何在 Rails 4.2 和 sqlite 中按星期几进行过滤?

git - 为什么 git 历史记录中没有显示分支名称?