git 和 Gemfile.lock 的问题
Posted
技术标签:
【中文标题】git 和 Gemfile.lock 的问题【英文标题】:Troubles with git and Gemfile.lock 【发布时间】:2015-08-30 07:54:05 【问题描述】:每当我想执行git pull
或签出新分支时,我的Gemfile.lock
都会遇到以下错误。
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 存储库,但很快,这一切又开始发生了。
【问题讨论】:
Pavan:不,存储不起作用。我运行git stash
,Gemfile.lock 神奇地停留在那里:/
在未跟踪文件或修改文件下?
Pavan:修改后的文件下。
【参考方案1】:
您无法签出 Gemfile.lock,因为 spring 在后端运行以在开发环境中同步您的代码。如果要结帐,首先要停止 spring 进程。您可以通过两种不同的方式停止弹簧。
-
要么在终端中使用命令停止 spring
弹簧停止
或者通过手动杀死本地运行的spring的进程,就像
ps -aef | grep spring
kill -9 pid
我觉得两者都不错。选择更适合您的!
【讨论】:
【参考方案2】:这发生在我身上,接受答案中的git reset --hard HEAD
没有帮助。然而,运行spring stop
就成功了。我怀疑 spring 会在修改文件时重写文件,以确保它与通过 spring 运行的代码同步。
【讨论】:
谢谢您,先生!让我省了很多麻烦! 这对我有用 :),当我们编写 spring stop 和 git checkout Gemfile.lcok 时,它看起来像 spring 问题 这是正确答案:***.com/questions/15745045/… 这样的回答让我非常喜欢这个社区。再次为我节省了大量时间!【参考方案3】:执行以下操作后,我能够再次拉出并签出分支。
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 集成)
【讨论】:
以上是关于git 和 Gemfile.lock 的问题的主要内容,如果未能解决你的问题,请参考以下文章