この記事では、gitを使っている中でコミットはしたくないけど変更履歴は残しておきたい場合に利用する「git stash」の基本的な使い方を紹介します。
ブランチを移動する際などに変更が残っていると変更分がそのまま反映されたりして面倒です。
かといってコミットを残すまでもないということも業務の中では発生します。
こういった際に「git stash」を使用します。
さらにブランチの切り忘れで作業を進めてしまい、これまでの作業分を別ブランチに移動させたいといった場合もgit stashが使えます。
基本的な使い方をマスターして効率良い開発を目指しましょう。
書籍でGitを学習したい方へのおすすめ書籍
Gitに関する書籍でおすすめがこちらです。
IT初学者向けに分かりやすい動画や書籍を出しているたにぐちまことさんという方の書籍です。
Gitの基本理解と、実務で最低限必要な知識が網羅されている良書です!
気になった方はお試しください。
git shashの基本的な使い方
それでは早速git stashの基本的な使い方を紹介します。
git stash -u
これでコミット前の変更を待避することができるようになります。
git statusでも変更履歴が消えた状態になります。
stashリストを確認する「git stash list」
「git stash list」でstashで待避したリストを確認することができるようになっています。
$ git stash list
stash@{0}: WIP on main: component
一度のstashで1回分のstash listが追加されるようになっています。
「stash@{0}」となっている部分が各shtash listを識別するための番号です。
stashした変更分を元に戻す
ここから待避した変更分を元に戻します。
$ git stash apply stash@{0}
On branch main
Your branch is up to date with 'origin/main'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: 04_react_basic/src/073_practice_component/start/Example.js
Untracked files:
(use "git add <file>..." to include in what will be committed)
04_react_basic/src/073_practice_component/start/components/
「git stash apply stash@{0}」で待避した変更分を戻すことができます。
ここの「stash@{0}」の部分が先ほどstash list表示されたstash名です。
listが複数ある場合はstash名を的確に指定するようにしましょう。
これで基本的な使い方はオッケーです。
特定のファイルだけをstashしたい場合
ここからは知っていたら便利なものを紹介します。
まずは特定のファイルをstashする方法です。
先ほど紹介した方法では、すべての変更分をstashしてしまいます。
特定のファイルだけをstashしたい場合は以下のようにします。
$ git stash push -- [ファイルのパス]
こうすることで特定のファイルパスだけをstashすることができます。
戻す際は先ほどと同じように「git stash apply stash@{0}」で戻すことができます。
stashした履歴を削除する
続いてはstashした履歴を削除する方法を紹介します。
$ git stash drop stash@{0}
「stash@{0}」の部分は今までと同じように削除したいstash名を指定します。
元に戻すと同時にそのstashリストを削除する
先ほど紹介した元に戻す方法は「git stash apply stash名」でした。
元に戻すと同時にそのstashリストを削除するには以下コマンドを利用します。
$ git stash pop stash@{0}
「pop」を使うことで元に戻すと同時にリストも削除することができます。
stashリストをすべて削除する
すべてのリストを削除する場合は以下コマンドを使います。
$ git stash clear
一括で削除したい場合に使えます。
知っておくと便利なgit stash
いかがだったでしょうか。
知っておくと、ブランチ移動忘れの場合や一旦作業を止めたい際に便利です。
私はgit stashを知る前は変更分を戻すのに無駄な時間を費やしました。
git stashを使って効率的に開発を進めましょう。
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!