人们在Git中重新定位时解决Gemfile.lock冲突的策略是什么?
我不得不在最近的一个项目中做很多事情,不仅乏味,而且并不总是清楚如何进行合并。
答案 0 :(得分:23)
你可以通过合并驱动程序(通常用于always keep the local version of a file during a merge)在每次合并时重新锁定它。
请参阅Auto Merge Gemfile.lock中的“Will Leinweber”:
你所要做的就是运行
(在Rail3中过时)bundle lock
bundle install
让bundler
重新锁定,然后添加并继续你的变基。< / p>首先是您的
~/.gitconfig
文件 在这里,我们将给它一个新的合并策略,一个只重新锁定gemfile 将其添加到最后:
[merge "gemfilelock"]
name = relocks the gemfile.lock
driver = bundle install
接下来,我们必须告诉git使用
Gemfile.lock
的新策略,我们使用gitattributes
执行此操作。
您可以将其放在project/.git/info/attributes
或project/.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