2016-10-22 103 views
0

我有一个合并冲突,并知道冲突,但混淆如何解决它。合并冲突Gemfile.lock

<<<<<<< HEAD 
    orm_adapter (0.5.0) 
======= 
    arser (2.3.1.4) 
    ast (~> 2.2) 
>>>>>>> master 

<<<<<<< HEAD 
warden (1.2.6) 
    rack (>= 1.0) 
======= 
unicode-display_width (1.1.1) 
>>>>>>> master 

我只是将冲突宝石添加到gem文件中吗?

+0

@AndreyDeineko这是一个可怕的建议,除非这是一个全新的项目或OP是非常小心指定gem文件中的gem版本。 –

+0

作为一种良好的做法,不建议将Gemfile.lock添加到git,因为无论如何,它将在每次运行软件包安装时创建。 – uday

+0

@uDaY这绝对不是最佳实践。这将导致每个开发人员在其开发机器上安装不同的gem版本集。此外,它会导致您的服务器安装了不同于您正在开发的gem版本。 –

回答

1

你不想删除你的Gemfile.lock。你应该做的是重置锁定文件,然后重新捆绑。

git checkout Gemfile.lock 
bundle 

如果您删除了锁定文件和绑定,那么最有可能会升级应用中的许多宝石。即使您已经完成了pessimistic versioning的良好工作,仍然会升级修补程序版本,这是因为合并冲突而不想执行的操作。

此外,关于不向git添加锁定文件的想法,不要那样做。这样做会导致每个开发人员在他们的开发机器上安装不同的一组gem版本。此外,它会导致您的服务器安装了不同于您正在开发的gem版本。

所有这些都是在将锁定文件重置为在对Gemfile进行任何更改之前的状态。正在运行的捆绑包将添加(到锁定文件)任何宝石已被添加到Gemfile。但是,它不会更改锁定文件中的任何其他宝石。如果删除锁定文件,它将生成一个基于Gemfile的全新锁定文件,该文件将允许使用最新的gem版本(除非Gemfile中有任何版本控制,否则为最新版本)。

+0

所以。一旦我运行这个命令,我就不必担心其他团队有不正确的Gemfile.lock问题了吗? – codda

+0

正确。我也给答案加了一个解释。 –