web-dev-qa-db-ja.com

gitと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リポジトリのクローンを作成するところまで行きましたが、すぐに、すべてが再び起こり始めます。

35
grautur

これは私に起こり、受け入れられた回答のgit reset --hard HEADは役に立ちませんでした。ただし、spring stopを実行するとうまくいきました。 Springが変更されたときはいつでも、Springがファイルを書き換えて、Spring経由で実行されているコードと同期していることを確認していると思います。

82

以下を実行した後、ブランチをプルしてチェックアウトすることができました。

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ビルド2.9.20150624-nightly(w/Shell統合)

9
the_minted

Springがバックエンドで実行され、開発環境でコードを同期しているため、Gemfile.lockをチェックアウトできません。チェックアウトする場合は、最初にスプリングプロセスを停止します。春を止める方法は2つあります。

  1. ターミナルでコマンドを使用してスプリングを停止するか

春の停止

  1. または、ローカルで実行されている春のプロセスを手動で強制終了することにより、

    ps -aef | grep spring
    kill -9 pid
    

どちらも良さそうです。あなたにとってより良いものを選んでください!

0
V K Singh