gitコマンド 業務でよく使用する基本操作編 stash

git関連

どうも、こんにちは!

業務でよく使用するgitコマンドについて、今日は主にstashについて、まとめようかと思います!

git stashとは

更新途中のファイルを一時退避することができます。

業務ではどんな場面で使用する?

実際に僕が業務で一番遭遇する場面が、

  1. 作業ブランチAでの作業が終わり、コミット・リモートへプッシュまで完了
  2. 次の作業のため、別のブランチBを作成し、ブランチBで新たな作業を開始
  3. しかし、ブランチAで作業した内容に不備があることが、のちに発覚
  4. 再びブランチAに戻って、修正作業をしなければならない
  5. しかし、ブランチBでいくつかのファイルを更新している

更新中のファイルがある状態で、ブランチBからブランチAへgit checkout で切り替えようとすると、エラーとなり切り替えることができません。
ブランチを切り替えるには、コミットするか、取り消すしかありません。

つまり、今の状態は

  • 再びブランチAに戻りたい
  • だけど、せっかく作ったブランチBの作業中のファイルは取り消したくない
  • だけど、コミットするには、まだ作業状況は中途半端

ここで登場するのが、stashです!

長くお話ししてしまいましたが、要は・・・

作業途中のファイルがあるけど、別のブランチに切り替えたいという時にstashを使う場面が多くなります。

この他、ブランチを切り替える必要があるにもかかわらず、忘れてしまい、間違ったブランチで作業をしてしまった場合なども、stashにお世話になりました😅

コマンド紹介

git stashの操作は、リモートリポジトリには影響が出ませんので、どんどん試し打ちをして慣れましょう!

一時退避(保存)する

git stash (save)

saveは省略できます。

メッセージをつけることもできます。

git stash save 〇〇メッセージ

ただし、一点注意としては、新しく作成したファイルやフォルダなどは、上記のコマンドではstashされません

新しく作成したファイルやフォルダをstashの対象とする場合は、「-u」オプションをつけます。

git stash (save) -u

メッセージをつける場合は、

git stash save -u 〇〇メッセージ

stashした一覧を表示する

git stash list

stashした内容を戻す・・・パターン1

stashを戻す際は、戻す先のブランチを間違えないよう確認してください。
以下で、紹介するコマンドを実行してstashを戻す場合、現在いるブランチにstashが適用されます。

実行する前は、まずは「git branch」で現在のブランチを確認しましょう!

git stash pop (数字)
  • ()の数字の部分には、どのstashを戻すかを指定できる。
    「git stash list」でstashの一覧を見ると、それぞれに stash@{0}: のように表示される
    {}の中の数字を「git stash pop 0」のように指定できる。
  • 数字を省略すると、最新のstash(一番最後にstashしたもの・{0}となっているもの)が適用される
  • popして戻したstashは、削除される
    次に紹介するパターン2との違いはここです!

stashの数が多くなると、どのstashがどんな内容の変更だったかわからなくなるので、あまり多くstashは作らない方がいいですね😅

stashした内容を戻す・・・パターン2

もう一つstashを戻すコマンドがあるので、ご紹介します。

git stash apply (数字)
  • popと同じように数字を指定することで、どのstashを戻すか選択できる
  • 数字を省略すると、最新(0番目)のstashが対象となる
  • popとの違いは、applyで戻したstashは削除されず、残ったままとなる

個人的には、「apply」はあまり使いません。

stashを残したままにしておくと、結局どんな内容のstashだったかゴチャゴチャになってしまうので、戻したstashは削除しておくという運用がおすすめかなと思います!

stashを削除する

git stash drop (数字)
  • こちらも数字により対象のstashを選択することができる
  • 数字を省略すると、最新(0番目)のstashが対象となる

applyでの復元をした後、そのまま残ったstashを削除する際などに主に使用します。

stashの一括削除

dropは、一つずつの削除でしたが、今回は全てのstashを一度に削除できます。

git stash clear

まとめ

No コマンド 内容
1 git stash (save 〇〇メッセージ) 更新中のファイルを一時退避する
2 git stash list stashを一覧表示する
3 git stash pop (数字) stashした内容を戻す
戻すと同時にstashを削除する
4 git stash apply (数字) stashした内容を戻す
stashは残ったまま
5 git stash drop (数字) stashの削除
6 git stash clear 一括削除

業務中によく使うコマンドは、赤字にしています。

stashを多く作りすぎると、メッセージがつけられるとはいえ、どれがどれだかわからなくなってしまうので、あまりおすすめしません

僕は業務では、あまり複数のstashを作成しなければならないという場面は、まだ遭遇していません。
そのため、stashにメッセージをつけて管理したり、複数のstashの中から数字を指定して選択するということも、業務ではあまりないため、メッセージや(数字)の部分は、赤字にせず、あえて区別しています。

とはいえ、ある作業中に別の作業が発生し、ブランチを切り替える必要があるという場面は、業務では多々あります。
そんな時にstashは非常に便利ですので、ぜひ覚えておきましょう!

git関連プログラミング
ダイジュをフォローする
効率的にプログラミングスキルを身につけて、ITエンジニアになろう!

どの企業も中途採用では、入社後に新人研修のような手厚いプログラミング研修を用意していることはなく、すぐに現場配属となることがほとんどです。
そのため、転職前にしっかりと学習しておくことが必要となります。
僕は、企業の新人研修とプログラミングスクール受講のどちらも経験したことがありますが、スクールの受講内容は、企業の研修にも引けを取らないと感じます!
エンジニアへの転職を本気で考えている方は、効率的に差を埋めるためにもぜひプログラミングスクールの受講をおすすめします!

ITエンジニア ダイジュBlog
タイトルとURLをコピーしました