2017-04-17 1 views
0

私は別のブランチで作業している私のレールプロジェクトを持っています。私は新しいモデルやスキーマの変更などの追加に多くの変更を加えましたが、私は最近bundle installの代わりにbundle updateを実行して新しい宝石を追加しました。私も宝石のバージョン(私はおそらくやるべきです)をロックしていないし、最新のバージョンに多くのものを更新しました。これは、それが見える多くの事を壊してしまった。私のブランチで私の "他の"変更をすべて失うことなく、これらをロールバックするにはどうすればいいですか?変更をすべてロールバックせずに、最近のバンドルのアップデートをロールバックする方法はありますか?

私の最初の考えは、私のmasterブランチのgemロックファイルからすべてのバージョン番号を調べて、それらをブランチの既存のgemfileに追加して、それらをロールバックするための更新をやり直しました。しかし、おそらくこれは私がやっているべきことではありませんか?ありがとう!

+0

gemの更新が単一のコミットに分離されている場合は、[cherry picking](https://git-scm.com/docs/git-cherry-pick)を使用して不正なコミットを回避できます。それ以外の場合は、バージョン制約をgemfileに追加し、 'gem update'を再度実行して正しい依存関係を取得する必要があります。 – max

+0

@max、okありがとう。私は先に進んで、 'master'ブランチのgemロックファイルを見て、既存のgemファイルを編集することでバージョン番号をやります。私は過去にそれをやっていたはずです。 – daveomcd

+0

'Gemfile.lock'フォーム' master'をつかんで 'bundle install'を実行しただけでは助けにならないでしょうか?私は 'Gemfile'のバージョンを以前の状態に戻すように制限する必要はないと思います。 – BoraMa

答えて

0

まず、gitkなどを使用して、Gemfile.lockの「良い」バージョンを持つ最後のコミットを見つけます。

次に、git checkout $COMMIT Gemfile.lockは、そのファイルをコミット$COMMITのバージョンにリセットします。もちろん、あなたも同様にその周りをハックした場合はGemfileのために繰り返します。

さておき、あなたは一般的にGemfileであなたの宝石のない手動でロックバージョンがそうであるように、それはGemfile.lockが何のためにあるのかです。

関連する問題