git和Gemfile.lock的问题

问题描述 投票:34回答:3

[每当我想执行Gemfile.lock或签出新分支时,我的git pull都会遇到以下错误。

error: Your local changes to the following files would be overwritten by merge:
    Gemfile.lock
Please, commit your changes or stash them before you can merge.
Aborting

问题是我不知道如何解决它。

  • 隐藏文件无效-出于某些原因,本地更改仅保留在此处。
  • 我也尝试过运行git checkout -- Gemfile.lock放弃更改,但这也不起作用-本地更改只保留在那里。
  • 我也尝试过创建一个新分支,然后只将Gemfile.lock更改提交给该分支...但是那也不起作用。更改仍然存在!

我需要做什么?我已经走到只克隆一个新的git repo的地步了,但是很快,所有这一切又开始发生了。

ruby-on-rails git gemfile merge-conflict-resolution gemfile.lock
3个回答
80
投票

这发生在我身上,被接受的答案中的git reset --hard HEAD并没有帮助。但是,运行spring stop可以解决问题。我怀疑spring会在修改文件时重写它,以确保它与通过spring运行的代码保持同步。


9
投票

完成以下操作后,我能够再次拉出并签出分支。

git checkout Gemfile.lock
git reset --hard HEAD

我不确定该解决方案为何以及如何工作。欢迎解释。

git在我的案例中检测到Gemfile.lock被修改的原因是,文件的底部为BUNDLED WITH 1.10.3。更新捆绑程序gem update bundler,重新生成并提交Gemfile.lock后,它停止以修改的形式出现在git中。

git版本2.2.1,Mac OSX版本10.10.4,iTerm2 Build 2.9.20150624-每晚(带shell集成)


0
投票

您无法检出Gemfile.lock,因为spring在后端运行,无法在开发环境中同步代码。如果要结帐,请先停止弹簧加工。您可以通过两种不同的方式停止弹簧。

  1. 要么您只是在终端中使用命令停止spring

弹簧停止

  1. 或者通过手动杀死在本地运行的spring进程,就像

    ps -aef | grep spring
    kill -9 pid
    

两者对我来说都很好。选择最适合您的!

© www.soinside.com 2019 - 2024. All rights reserved.