在重新定位时Gemfile.lock中的冲突

时间:2011-09-04 18:28:31

标签: ruby-on-rails-3 git bundler conflict rebase

人们在Git中重新定位时解决Gemfile.lock冲突的策略是什么?

我不得不在最近的一个项目中做很多事情,不仅乏味,而且并不总是清楚如何进行合并。

3 个答案:

答案 0 :(得分:23)

你可以通过合并驱动程序(通常用于always keep the local version of a file during a merge)在每次合并时重新锁定它。

请参阅Auto Merge Gemfile.lock中的“Will Leinweber”:

  

你所要做的就是运行 bundle lock (在Rail3中过时)bundle installbundler重新锁定,然后添加并继续你的变基。< / p>      

首先是您的~/.gitconfig文件   在这里,我们将给它一个新的合并策略,一个只重新锁定gemfile   将其添加到最后:

[merge "gemfilelock"]
  name = relocks the gemfile.lock
  driver = bundle install
  

接下来,我们必须告诉git使用Gemfile.lock的新策略,我们使用gitattributes执行此操作。
  您可以将其放在project/.git/info/attributesproject/.gitattributes中。

Gemfile.lock merge=gemfilelock

答案 1 :(得分:4)

使用git log Gemfile.lock查找先前提交的哈希值。然后运行git checkout abcde Gemfile.lock以恢复原状。在此之后,您的bundle install命令应该可以正常工作。

答案 2 :(得分:1)

您可以使用此脚本自动设置git存储库以使用上述合并解析策略:https://gist.github.com/itspriddle/5548930

或者,您可以使用tpope的hookup在git pulls之后自动执行此操作(并运行数据库迁移):https://github.com/tpope/hookup