その他
    ホーム 技術発信 DoRuby 【git】変更を一時退避する
    【git】変更を一時退避する
     

    【git】変更を一時退避する

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    pushしないといけない変更をpushしないまま、新たに中途半端に変更を加えてしまった時のコマンド
     

    保存

    まず現在の変更を保存します。
    addとかしていたら全部戻します。

    git stash save

    このコマンドで保存ができます。(saveは省略可能です。)
    これでdiffをチェックするとdiffがなくなっているので、pushができるようになります。

    確認

    保存されているのを確認するにはこのコマンドを利用します。

    git stash list

    このコマンドを利用すると

    stash@{0}: WIP on sample_branch: 889808 commit_comment
    

    というように一時保存したリストが出てきます。
    もっと詳細な変更を見たい場合はこのコマンドを利用します。

    git stash show <スタッシュ名>

    <スタッシュ名>の部分にはリストに出てきた「stash@{0}」などを入れます。
    このコマンドを利用すると

     sample.txt | 1 +
     1 file changed, 1 insertion(+)
    

    このように変更したファイルなどを参照することができます。
     

    変更を戻す

    変更を戻すにはこのコマンドを利用します。

    git stash apply <スタッシュ名>

    あまりスタッシュが残ってしまうとどれがどれだかわからなくなってしまうので、削除も行います。

    git stash drop <スタッシュ名>

    リストを確認すると消えていることがわかります。
    定期的に整理を行うことをおすすめします。
    ちなみに、このコマンド

    git stash pop <スタッシュ名>

    復活させて削除、これら2つを一気に行ってくれます。
     

    最後に

    半年ほど前、初めて使った時に何をやったのか変更消してしまったので、二度と使うものかと思いながら仕事をしていました。
    つい先日どうしてもその日にpushしないといけないものをpushしないまま新しいタスクに着手し、このコマンドを叩くことになりました。
    今回は失敗しなかったので、またも備忘録です。
    前回はpopとdropを間違えたのか?もう何をやって消してしまったのか思い出せませんが、気をつけて使用しましょう…。