Git入門#17(スタッシュしてみよう)




cocomaru
今回は作業を一時的に退避する方法を教えます!
hiromin
一時的に退避?どういう時に使うの?
cocomaru
ソースコードを編集中でコミットしたくないけど、別のブランチで作業しないといけない時ってない?
hiromin
あぁ、あるある!
cocomaru
そういう時に使えるコマンドがあって、それはstash(スタッシュ)を使います。

git stashコマンドで作業を一時退避してみよう

こんにちは、cocomaruです。

今回は作業を一時的に退避する「git stash」というコマンドについて学んで行きます!
では早速、実践していきましょう。

git stash save <コメント>

それでは「index.html」を編集して退避してみます。

~/Desktop/WorkDir/index.html
<!DOCTYPE html>
<html lang="ja>
<head>
  <meta charset="utf-8">
  <title>Git入門</title>
</head>
<body>
<p>Git statusの練習</p>
<p>Git diffの練習</p>
<p>Conflictの練習</p>
<p>git stashの練習</p> <!-- 1行追加 ※これはコメントですので記載しなくて大丈夫です。 -->
</body>
</html>

以下のコマンドで退避します。

# 作業用ディレクトリへ移動 
$ cd ~/Desktop/WorkDir

# 作業ファイルを確認 
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

# 作業内容を退避 
$ git stash save "○○作業内容を一時的に退避する"
Saved working directory and index state On master: ○○作業内容を一時的に退避する

# 退避されたか確認 
$ git status
↓の通り差分がない状態になっている 
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

これで退避は完了しました。

退避した作業を確認してみよう

次に退避した作業内容を確認してみましょう。

git stash list

確認コマンドは「git stash list」になります。

# 退避した内容を確認する 
$ git stash list
stash@{0}: On master: ○○作業内容を一時的に退避する

先ほど退避した内容が確認できましたね?!

退避した作業を復元してみよう

それでは今度は退避した内容を元に戻してみましょう!

復元方法は以下の通り、いくつか指定方法があります。

  • git stash apply — 最新の退避情報を復元
  • git stash apply スタッシュ名 — スタッシュ名(stash@{番号})を指定し復元したい内容を選択して復元
  • git stash pop — 最新の退避情報を復元し、退避した内容は削除する
  • git stash pop スタッシュ名 — スタッシュ名(stash@{番号})を指定し復元したい内容を選択して復元し、退避した内容は削除する

今回は「apply」を使用して復元してみます。

git stash apply

それでは元に戻していきましょう。

# 退避した内容を復元する 
$ git stash apply
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add ..." to update what will be committed)
  (use "git checkout -- ..." to discard changes in working directory)

    modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

コマンド実行後、退避した内容を元に戻せたと思います!

退避した作業を削除してみよう

退避した内容は前述の「git stash pop」で復元して削除する方法を実行するか、
以下の「git stash drop」で削除しない限り削除されません。

先ほどは「git stash apply」で元に戻したので、退避した内容は削除されていないはずです。
せっかくなので、削除も実行してみたいと思います。

削除は以下の方法があります。

  • git stash drop — 最新の退避情報が削除される
  • git stash drop スタッシュ名 — スタッシュ名(stash@{番号})を指定し削除したい内容を選択して削除
  • git stash clear — 退避した内容を全て削除する

いくつかありますが、今回は「git stash drop」を使った方法で削除していきます。

git stash drop

では早速実行してみましょう。

# 退避した内容を削除する 
$ git stash drop
Dropped refs/stash@{0} (751e258d8b9fa40a0a7e78ef473c39fdfee4af72)

# 退避した内容が削除されているか確認 
$ git stash list
※何も表示されないはず 

如何でしょうか?
上記のコマンドで退避した内容が削除されたかと思います。

ポイント
  • スタッシュで作業中のファイルを一時的に退避できる

最後に、編集した内容は破棄したいので以下のコマンドを実行して編集内容をクリアします。

$ git checkout -- index.html 

cocomaru
stashコマンドの便利さはわかってもらえたと思うけど、現場でも結構使うコマンドだから、しっかり覚えてね!
hiromin
はい!わかりましたー^^

作業中に別作業を依頼されて作業を中断せざる負えないケースがよくありますが、
そんな時にstashコマンドを使うと退避できて、また中断したところから作業が再開できます。

覚えておくと作業がすごく捗るので、是非、この機会に使って覚えてみましょう^^









コメントを残す

メールアドレスが公開されることはありません。