データ分析エンジニアのブログ

日常のことからプログラミングや機械学習まで@六本木

git stashで変更内容を一時退避する

今回はgitのstashの使い方について書いていきます。


gitにはstashという領域があり、
一時的に変更内容を退避する仕組みが用意されています。


機能ベースでブランチを切って開発しているのですが、
現在開発しているものをコミットせずに、前回開発したものを
少し修正したいと思い、辿り着いたのがこの方法です。


使い方はとても簡単でだいたい5つほどのコマンドで完結します。

1. 一時保存のメッセージを引数にして変更内容を保存
$ git stash save 'message'

このとき、新しく作成したばかりのファイルはgitの管理下に置かれていないため、
stashに保存できません。
保存したい場合は、git addコマンドでステージングに上げましょう。

2. 保存されているstashを表示
$ git stash list
3. 保存されている変更内容を反映
$ git stash pop stash@{0} --index

indexオプションを追加しないとステージングに反映されません。
ちなみに各git stashコマンドではstash名(この場合ではstash@{0})
を指定していますが、省略することで直前のstashを指定できます。

4. 一時的に退避した変更内容の変更点を確認
$ git stash show stash@{0} -p
5. 一時的に退避した変更内容を削除
$ git stash drop stash@{0}


ほかにも全てのstashを削除するgit stash clearなどのコマンドもありますが、
上記の5つくらいを覚えていれば使いこなせると思います。