LoginSignup
54
38

More than 5 years have passed since last update.

git stash popやgit stash clearを誤って実行してしまった時の処方箋

Posted at

想定シーン

  • あっ!意図しないブランチでgit stash popしてしまってConflictしてわけわかんなくなった!別のブランチにこのstash内容を反映したいのに!
  • あっ!日々の激務で疲れていて、わけのわからないところでgit stash clearしてしまった!死にたい!
  • もうなんかよくわかんなくなってきたから、一回全部白紙に戻してstashを反映したところから人生をやり直したい

stash を呼び戻す手順

1.まずstashを反映したかったブランチに切り替えます

2.stashの履歴を探します

下記のコマンドで、git logから探します。

git fsck --unreachable | grep commit | cut -d\  -f3 | xargs git log --merges 
--no-walk --grep=WIP

結果はこんな感じで出ます。

commit 6e54e2d5920f7464774e09b8f6d782c716494a2a
Merge: 5b70c38c 5829f39b
Author: hoge hogeo <hogeo@MacBook-Pro.local>
Date:   Wed Jun 14 21:02:11 2017 +0900

    WIP on feature/hogehoge: 5b70c38c Merge branch 'develop' into feature/hogehoge

commit baa17b7debbe43b254b5dee686e931c6a072f524
Merge: 5b70c38c b971c527
Author: hoge hogeo <hogeo@MacBook-Pro.local>
Date:   Wed Jun 14 20:48:13 2017 +0900

    WIP on feature/hogehoge2: 5b70c38c bug-fix hogehoge

3.目当てのcommit履歴を見つけたら、cherry-pickします

例えば、

commit baa17b7debbe43b254b5dee686e931c6a072f524
Merge: 5b70c38c b971c527
Author: hoge hogeo <hogeo@MacBook-Pro.local>
Date:   Wed Jun 14 20:48:13 2017 +0900

    WIP on feature/hogehoge2: 5b70c38c bug-fix hogehoge

のstash履歴を、現在のブランチに反映したいっ!という場合は、

git cherry-pick -n -m1 baa17b7debbe43b254b5dee686e931c6a072f524 <= 復元したいやつのSHA-1です

を実行します。
すると、現在のブランチに内容が反映(cherry-pick)されます。
やったね:v:

54
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
38