用git和Gemfile.lock引起麻烦

时间:2015-06-14 21:21:10

标签: ruby-on-rails git gemfile merge-conflict-resolution gemfile.lock

每当我想要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,但很快,所有这一切又开始了。

3 个答案:

答案 0 :(得分:78)

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

答案 1 :(得分:8)

完成以下操作后,我又能够拉出并检查分支机构。

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(带有shell集成)

答案 2 :(得分:0)

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

  1. 您只需在终端中使用命令停止spring
  

弹簧停止

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

    ps -aef | grep spring
    kill -9 pid
    

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