使い方

変更を退避する。

$ git stash

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

$ git stash -k

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

$ git stash list

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

$ git stash pop

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

$ git stash apply

退避した変更を捨てる。

$ git stash drop

参考:

色々な git stash – Qiita

git stash についてまとめてみた – Qiita

git stash の使い方 – Qiita

git stash – コミットはせずに変更を退避したいとき – Qiita

git-stash | Git Documentation [Official]

スタッシュからファイルをチェックアウトする

$ git checkout stash@{0} stashed_file.txt

未追跡のファイルを含めて退避する

-u オプションを使う。

$ git stash -u

退避した未追跡のファイルを確認する。

$ git show stash^3 --name-status

退避した未追跡のファイルを、ファイル名のみ表示する。

$ git ls-tree -r stash^3 --name-only

退避した未追跡のファイルを、強制的にチェックアウトする。

$ git ls-tree -r stash^3 --name-only -z | xargs -0 git checkout stash^3

退避した未追跡のファイルと同じパスのファイルを削除する。(git stash pop が失敗する場合に強制的に実行可能にする。)

$ git ls-tree -r stash^3 --name-only -z | xargs -0 rm
$ git stash pop

参考:

未追跡なファイルもまとめて退避する – Qiita

untracked ファイルを含めて stash – Qiita

未追跡なファイルを save する – Qiita

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

ステージされてない未追跡な新規ファイルなども退避するやり方 | tweeeety のぶろぐ的めも

How do you stash an untracked file? – Stack Overflow

Is there a way to show untracked stashed files without applying the stash? – 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:"%C(green)%cd%C(reset) %C(yellow)%h%C(reset) %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

参考:

削除したスタッシュを復活させる方法 | 日々精進

スタッシュをコミットもなしに消してしまった時の対応 – Qiita

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

誤って削除したスタッシュを戻す | deadwood

git-fsck Documentation | Git [Official]

強制的にスタッシュを取り出す

参考:

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 switch branch without discarding local changes – Stack Overflow

Checkout another branch when there are uncommitted changes on the current branch – Stack Overflow

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

※解決済み (v2.16.2 ~)

バージョン 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

記事をシェアする:
タグ:

コメントを残す

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

Protected by reCAPTCHA