Rails Gemfile.LOCK中的Git Merge问题

时间:2014-06-12 10:33:16

标签: ruby-on-rails git

在使用git将分支 b2 合并到 b1 时:

git merge root/b2

我的Gemfile.lock中出现了冲突

       GIT
         remote: git@git.abc.com:Proj1/lib1.git
      <<<<<<< HEAD
         revision: w6efra4fr643a3bc07497rdadc1fc0baf9cc736f
         branch: b1
      =======
         revision: 2b38d19b924724667aed675b31fc6649012a8141
         branch: b2
      >>>>>>> root/b2
         specs:
           lib1 (0.2.1)
             active_patch (>= 0.0.2)

我是rails的新手,所以不确定如何解决这个冲突。这里有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

如果您要提交Gemfile.lock,那么删除它然后运行bundle install对于您的应用程序来说是最糟糕的事情。

原因

  1. 如果你的Gemfile有一个没有版本的宝石,它很可能会更新到最新版本。

    gem 'mysql' ##将更新为0.3.16

    gem 'mysql', '3.0.14' ##无需担心,将保持不变

  2. 许多宝石使用其他宝石的pesimistic版本而依赖。(例如'〜&gt; {ver}')。创建一个新的Gemfile.lock肯定会更新这些悲观的依赖。

  3. 尽管可能,但可能不会破坏您的应用程序。但至少宝石应该只在你想要的时候更新。

    回到您的问题,您可以使用以下git merge stratergies来确保您想要保留哪些更改

    `git merge -Xours b2` This will keep changes from file version of b1 branch in case of conflict
    `git merge -Xtheirs b2` This will keep changes from file version of b2 branch in case of conflict
    

    如果你不确定你想要哪一个,请使用any并将gem更新到最新的git commit

    `bundle update --source lib1`