有些东西一直在重写我的 Gemfile.lock
Something keeps rewriting my Gemfile.lock
在共享项目上工作时,我经常发现我的 Gemfile.lock
与存储库不同步,产生如下错误消息:
$ git pull
Updating 1911275..8c5d26f
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.
Aborting
当我尝试 git stash
更改时,它不起作用:
$ git stash
Saved working directory and index state WIP on development: 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
HEAD is now at 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
$ git status
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Gemfile.lock
no changes added to commit (use "git add" and/or "git commit -a")
如果我 stash
和 status
足够快,我可以看到更改已被隐藏:
$ git stash && git status
Saved working directory and index state WIP on development: 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
HEAD is now at 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
但是另一个status
显示Gemfile.lock
已经回来了:
$ git status
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Gemfile.lock
no changes added to commit (use "git add" and/or "git commit -a")
不幸的是,同样的技巧不适用于 git stash && git pull
; pull
太慢了,拉取成功之前锁文件又出现了
我认为这可能是我的 IDE 在后台重新捆绑,但无论 IDE 是否为 运行,它都会发生。我找不到任何 运行 捆绑程序进程、gem 进程,或者任何明显的 Ruby 进程。
谁或什么正在重新生成我的文件?
找到罪魁祸首,感谢this answer (this answer concurs): Spring。我的机器上有六个流氓 spring
进程,其中任何一个或所有进程都必须重新生成文件。杀死这些进程解决了这个问题,到目前为止,将 export DISABLE_SPRING=1
添加到我的 .bash_profile
似乎已经防止它再次出现。
(spring stop
可能也有效。不过我不知道它是停止所有 Spring 进程还是只停止其中一个进程。)
在共享项目上工作时,我经常发现我的 Gemfile.lock
与存储库不同步,产生如下错误消息:
$ git pull
Updating 1911275..8c5d26f
error: Your local changes to the following files would be overwritten by merge:
Gemfile.lock
Please commit your changes or stash them before you merge.
Aborting
当我尝试 git stash
更改时,它不起作用:
$ git stash
Saved working directory and index state WIP on development: 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
HEAD is now at 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
$ git status
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Gemfile.lock
no changes added to commit (use "git add" and/or "git commit -a")
如果我 stash
和 status
足够快,我可以看到更改已被隐藏:
$ git stash && git status
Saved working directory and index state WIP on development: 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
HEAD is now at 1911275 Merge branch 'development' of https://github.com/mygroup/myrepo into development
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
nothing to commit, working tree clean
但是另一个status
显示Gemfile.lock
已经回来了:
$ git status
On branch development
Your branch is behind 'origin/development' by 3 commits, and can be fast-forwarded.
(use "git pull" to update your local branch)
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Gemfile.lock
no changes added to commit (use "git add" and/or "git commit -a")
不幸的是,同样的技巧不适用于 git stash && git pull
; pull
太慢了,拉取成功之前锁文件又出现了
我认为这可能是我的 IDE 在后台重新捆绑,但无论 IDE 是否为 运行,它都会发生。我找不到任何 运行 捆绑程序进程、gem 进程,或者任何明显的 Ruby 进程。
谁或什么正在重新生成我的文件?
找到罪魁祸首,感谢this answer (this answer concurs): Spring。我的机器上有六个流氓 spring
进程,其中任何一个或所有进程都必须重新生成文件。杀死这些进程解决了这个问题,到目前为止,将 export DISABLE_SPRING=1
添加到我的 .bash_profile
似乎已经防止它再次出现。
(spring stop
可能也有效。不过我不知道它是停止所有 Spring 进程还是只停止其中一个进程。)