【git stash】Gitでコミットしないまま変更を隠す

あるブランチで作業中だけど、急遽別の対応をしないといけなくなった。

未コミットの変更が作業ディレクトリやステージングエリアに残っている場合、それがもしチェックアウト先のブランチと衝突する内容ならブランチの切り替えはできません。

しかし、作業が中途半端なのでコミットはしたくない・・・

そのような時にはgit stashコマンドが便利です!

git stashコマンドは、コミットしていない変更をコミットしないまま一時的に隠すことにより、作業を中断することができます。そして別の対応が終わったら、隠しておいた変更をブランチに戻して作業を再開することができるのです。

この記事ではgit stashコマンドについてまとめました。参考になりましたら幸いです。

Gitでコミットしないまま変更を隠す

コミットしないまま変更を隠すには以下のようにgit stashコマンドを使います。
このコマンドにより作業ディレクトリやステージングエリアにある変更を隠すことができます。

$ git stash -u -m "任意のメッセージ"

任意のメッセージには、中断する作業の一言メモなどが良いでしょう。作業を再開する時に役に立ちます。

隠した変更を確認する

隠した変更を確認するには以下のコマンドを使います。
このコマンドにより隠した変更を新しい順に一覧で確認することができます。

$ git stash list
stash@{0}: WIP on main: xxxxx
stash@{1}: WIP on main: xxxxx

1行が1回分の隠した変更になります。
stash@{n}がスタッシュ番号です。(0が直近の変更)
WIP onのあとはブランチ名で、xxxxxはstashしたときの任意のメッセージが表示されます。

中断した作業を再開する

中断した作業を再開するには以下のコマンドを使います。
このコマンドにより隠しておいた変更が、現在のブランチ(stash時のブランチと異なってもOK)に戻り作業を再開できます。

$ git stash apply 再開する変更のスタッシュ番号 --index

なお、スタッシュ番号を指定しない場合は、直近に隠した変更に戻ります。

隠しておいた変更情報を削除する

隠しておいた変更を現在のブランチに戻しても、変更情報は残ったままです。
ので、現在のブランチに戻した後にもう必要ないのなら変更情報は削除しておきましょう。

隠しておいた変更情報を削除するには以下のコマンドを使います。

$ git stash drop 削除する変更のスタッシュ番号

なお、スタッシュ番号を指定しない場合は、直近に隠した変更情報が削除されるので注意が必要です。

隠しておいた変更情報を一気に全部削除するには以下のコマンドを使います。

$ git stash clear

作業の再開と変更情報の削除を同時に行う

以下のコマンドで「作業の再開」と「隠しておいた変更情報の削除」が同時に行えるので覚えておくと便利です。

$ git stash pop 再開と削除を行うスタッシュ番号

なお、スタッシュ番号を指定しない場合は、直近に隠した変更の再開と削除を同時に行います。

まとめ

今回紹介したgit stashコマンドを表にまとめました。

コマンド説明
git stash -u -m “任意のメッセージ”コミットしないまま作業を中断する
git stash list隠した変更情報を確認する
git stash apply 再開する変更のスタッシュ番号 –index中断した作業を再開する
git stash apply –index中断した直近の作業を再開する
git stash drop 削除する変更のスタッシュ番号隠しておいた変更情報を削除する
git stash drop直近に隠した変更情報を削除する
git stash clear隠しておいた変更情報を全部削除する
git stash pop 再開と削除を行うスタッシュ番号作業の再開と隠しておいた変更情報の削除を同時に行う
git stash pop直近に隠した作業の再開と変更情報の削除を同時に行う

その他のgit stashコマンド
https://git-scm.com/docs/git-stash

以上がコミットしないまま作業を中断する方法でした。

参考サイト
https://git-scm.com/book/ja/v2/Git-のさまざまなツール-作業の隠しかたと消しかた

タイトルとURLをコピーしました