使う局面が多いのでメモ。
1. 変更中のファイルのうち、一部のみstashする方法
git stash -p
git add -p
と同じく、差分のうちどれをstashするかを選択する。
2. 複数の変更中のファイルのうち、特定のファイルのみstashする方法
1 に示す方法だと、
「(git add [ファイル名]
のように)A.txt, B.txt, C.txtのうちB.txtの変更だけ全部stashしたい!」
という要望の時はA.txt, C.txtの差分も逐一選択しないといけなくてめんどくさかったり。
その場合、個人的にはこんな方法で対処してます。
# A.txt, B.txt, C.txtのうち、B.txtだけstashしたいという場合 # (1) stashしたいファイル以外をコミット(ローカルだけ) git add A.txt git add C.txt git commit -m '一時コミット(resetする)' # (2) stashしたいファイルだけが残った状態でgit stash git stash # (3) 直前のコミットを取り消す git reset HEAD~
こんな方法のためにコミットしていいのかなという気はしますが。
3. あるstashから、特定のファイルの内容のみ取り出す
git checkout stash@{[番号]} [ファイル名]
pop
じゃないのでstashはなくなりません。