【问题标题】:How can I rollback my recent bundle update without rolling back all my changes?如何在不回滚所有更改的情况下回滚我最近的捆绑包更新?
【发布时间】:2017-04-17 13:33:52
【问题描述】:

我有我的 Rails 项目,我正在一个单独的分支上工作。我对添加新模型、架构更改等进行了很多更改,但我最近做了一个bundle update 而不是bundle install 来添加一个新的gem。我也没有锁定我的 gem 版本(我可能应该这样做)并且它更新了许多到最新版本。这最终破坏了很多东西。如何在不丢失分支中所有“其他”更改的情况下回滚这些更改?

我最初的想法是从我的master 分支 gem 锁定文件中查找所有版本号,然后将它们添加到分支中我现有的 gemfile 并重做更新以回滚它们。但也许这不是我应该做的?谢谢!

【问题讨论】:

  • 如果 gem 更新被隔离为单个提交,您可以使用 cherry picking 绕过错误提交。否则,您应该将版本约束添加到 gemfile 并再次运行 gem update 以获得正确的依赖关系。
  • @max,好的,谢谢。我想我会继续通过查看master 分支 gem 锁定文件并编辑我现有的 gem 文件来获取版本号。看来我过去应该这样做。
  • 如果你只是抓住Gemfile.lock 表单master 并做了bundle install,难道没有帮助吗?我认为您无需限制 Gemfile 中的版本即可将内容回滚到以前的状态。
  • @BoraMa,哦,这是个好主意,我会试试的,谢谢!

标签: ruby-on-rails git bundler gemfile


【解决方案1】:

首先,使用gitk 或类似方法查找具有“良好”版本的Gemfile.lock 的最后一个提交。

然后,git checkout $COMMIT Gemfile.lock 将该文件重置为来自提交 $COMMIT 的版本。当然,如果您也曾在那个地方进行过攻击,请重复 Gemfile

顺便说一句,您通常手动锁定 Gemfile 中的 gem 版本,这就是 Gemfile.lock 的用途。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-28
    • 2010-09-19
    • 1970-01-01
    • 2023-04-08
    • 2019-05-29
    • 2012-06-22
    • 2012-09-13
    • 1970-01-01
    相关资源
    最近更新 更多