git:stashしたファイルを元の状態で取り出す
stash の一覧を表示する。対象の番号{n}を見つける。
$ git stash list
stash の diff の一覧を表示する。ここから必要なファイルのパスを見つける。
$ git stash show stash@{n} -p
パスを指定して表示して、それをファイルとして保存する。
$ git show stash@{n}:path/to/your/file >path/to/save/file
全ファイルを取り出すのが面倒なのでスクリプトを作った。
code:sh
#!/bin/sh
#echo $#
if $# -lt 1 ; then
echo usage $0 stash_number
exit 1
fi
STASH_NUM=$1
STASH_NAME=$(git stash list | grep '{'$STASH_NUM'}' | sed -e 's/^^:*:^:*: //' | sed -e 's/ /_/g')
#echo $STASH_NAME
#mkdir /tmp/$STASH_NAME
git stash show 'stash@{'$STASH_NUM'}' -p | grep 'diff --git' | awk '{ print $4; }' | sed -e 's#^b/##' | while read line
do
echo "$line"
DIRNAME=$(dirname "$line")
# echo "$DIRNAME"
mkdir -p "/tmp/$STASH_NAME/$DIRNAME"
git show 'stash@{'$STASH_NUM'}':"$line" >"/tmp/$STASH_NAME/$line"
done