2016-10-22 102 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

正確。我也給答案加了一個解釋。 –