使い方

変更を退避する。

$ git stash

ステージングした変更を残して退避する。

$ git stash -k

退避した変更のリストを表示する。

$ git stash list

退避した変更をワーキングツリーに戻す。

$ git stash pop

退避した変更を捨てる。

$ git stash drop

参考:

色々な git stash – Qiita

git-stash Documentation | Git [Official]

トラッキングしていないファイルも含めて退避する

-u オプションを使う。

$ git stash -u

参考:

git で未追跡 (untracked) なファイルもまとめて退避 (stash) する – Qiita

untracked file も git stash する | risacan.github.io

git stash でステージされてない (untracked な) 新規ファイルなども退避するやり方 | tweeeety のぶろぐ的めも

How do you stash an untracked file? – Stack Overflow

トラッキングしていないファイルをスタッシュからチェックアウトする

スタッシュは特殊なマージコミットとして格納されていて、3番目の親がトラッキングしていないファイルを含んでいる。

$ git checkout stash^3 -- filename

参考:

How can I checkout an untracked file in a git stash? – Stack Overflow

誤って削除したスタッシュを復活させる

git stash drop / pop で誤って削除したコミットを復活させる。

git fsck を使うエイリアスを定義する。

$ git config --global \
  alias.stash-log \
  '!git fsck 2> /dev/null \
    | awk "/dangling commit/ {print \$3}" \
    | xargs -n 1 \
      git -c color.ui=always log -1 \
        --date=format:"%Y-%m-%d %H:%M:%S" \
        --pretty=format:"%Cgreen%cd%Creset %C(yellow)%h%Creset %s%n" \
    | sort -r | cut -d " " -f 1,3-'

定義したエイリアスコマンドを実行する。(日時順ソートで最新の10件を表示)

$ git stash-log | head -n 10
2018-06-22 282ebb1 WIP on develop: 67e0ab3 Add hogehoge
2018-06-21 1d94280 WIP on develop: ac18953 Add fugafuga
2018-06-21 0ff070b WIP on develop: 431d6b8 Add piyopiyo
2018-06-21 e9d9263 WIP on develop: 6bcbb9b Add dayo
2018-06-21 7c8365d WIP on develop: 5d73f8e Refactor XYZ
2018-06-21 7a8ee4d WIP on develop: f8dcc21 Add nyaanyaa
2018-06-21 4f7d3aa WIP on develop: f8dcc21 Add wanwan
2018-06-21 43c5cd6 WIP on develop: f8dcc21 Add gyangyan
2018-06-21 e0ede68 WIP on develop: 9741396 Fix desudesu
2018-06-21 2cd9b82 WIP on develop: bab72dc Fix masumasu

参考:

Git で削除した Stash を復活させる方法 | 日々精進

git stash をコミットもなしに消してしまった時の対応 – Qiita

git stash save で一時退避した変更を、誤って git stash clear で消してしまったときの回復法 | t-wada の日記

誤って削除した git stash を戻す | deadwood

git-fsck Documentation | Git [Official]

強制的に stash を pop する

参考:

git stash pop が conflict したとき、強制的に pop させる方法 | yhara.jp

stash から apply や pop ができなくなった時。- Qiita

Force a “git stash pop” | Coderwall

Force git stash to overwrite added files – Stack Overflow

Why does git stash pop say that it could not restore untracked files from stash entry? – Stack Overflow

git stash -u が .gitignore にあるファイルやディレクトリを削除する

バージョン 2.16.2 以降では、git stash -u.gitigore にあるファイルに変更を加えない。

参考:

git stash -u が .gitignore のファイルを削除する | Folioscope

How do you stash an untracked file? – Stack Overflow

stash: don’t delete untracked files that match pathspec · git/git@bba067d – GitHub

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です