git stashを使って変更を一時的に退避する

今回は、ソースコードの変更を一時的に退避しておくことができる「git stash」コマンドについて説明します。

私は、一人プロジェクトで開発する時に、ブランチをmasterdevで分けたり、プルリク投げたり、マージしたりがかなりめんどくさかったので、masterブランチだけ作成して、そこの設定ファイルなどには開発環境の設定(DBの接続情報など)を書いておき、本番にデプロイする際には、本番環境でソースコードをpullした後で、設定ファイルを本番環境のものに書き換えて使ってましたが、仕様変更や機能追加をする時に、本番環境で変更している設定ファイルの変更を一度破棄して、pullした後でもう一度変更してたんですが、運用が進むにつれ、設定ファイルの変更箇所に漏れがあったり、設定ファイルの変更を忘れたりと、ミスが増えてきてたので、何かいい方法がないか調べてた時にgit stashというコマンドを知りました。

git stashを使うと、commitしていない状態の変更ファイルを一時的に退避させることができるようになります。

変更ファイルを退避した後でソースコードをpullして最新のものを取得した後で、退避していた変更ファイルを元に戻すことで、ソースコードを最新にできて、ローカルで変更していた内容も反映させることができるようになります。

git stashコマンドを正しく利用するためには、コマンド実行の流れをおさえておく必要があるので、その流れについて説明していきたいと思います。

git stashを使ってみる!

$ git stash save

上記コマンドを実行することで、変更ファイルを退避することができます。

退避しているファイルの状態を確認する際は、下記コマンドを実行します。

$ git stash list

変更ファイルは退避済みなので、ソースコードをpullして最新のソースコードを取得します。

$ git pull

最後に、退避していたファイルを元に戻します。

$ git stash pop

これで、退避していたファイルを元に戻すことができました!!

実行するコマンドの流れまとめ

下記の順番でコマンド実行すれば「変更ファイル退避」→「最新ソース取得」→「変更ファイル復帰」を行うことができます。

  1. git stash save
  2. git pull
  3. git stash pop

最後に

この流れを覚えておけば、ソースコード修正中に別の修正コミットを取り込まないといけない場合や、ソースの修正作業の途中で別の修正を優先して対応しないといけなくなった場合などに、今までの変更を破棄する必要もなくなります。

gitについてはあまり情報収集してなかったので、基本的なコマンドではありますが、非常に有益な情報でした。

git stashコマンド以外にも色々と役に立つコマンドがあると思うので、gitについてもしっかり勉強してコマンドを使いこなせるようになりたいですね。