41

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,但很快,这一切又开始发生了。

4

3 回答 3

94

这发生在我身上,git reset --hard HEAD从接受的答案没有帮助。然而,跑步spring stop成功了。我怀疑 spring 会在修改文件时重写文件,以确保它与通过 spring 运行的代码同步。

于 2015-08-03T14:52:58.310 回答
9

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

git checkout Gemfile.lock
git reset --hard HEAD

我不确定这个解决方案为什么以及如何工作。欢迎解释。

在我的情况下,git 检测到 Gemfile.lock 被修改的原因是文件的底部有BUNDLED WITH 1.10.3. 更新 bundler gem update bundler,重新生成并提交 Gemfile.lock 后,它在 git 中不再显示为已修改。

git 版本 2.2.1,Mac OSX 版本 10.10.4,iTerm2 Build 2.9.20150624-nightly(w/shell 集成)

于 2015-07-08T00:24:14.893 回答
1

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

  1. 要么你只是在终端中使用命令停止弹簧

弹簧止动

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

    ps -aef | grep spring
    kill -9 pid
    

两者在我看来都不错。选择更适合您的!

于 2019-11-06T19:23:03.233 回答