Git スタッシュを誤って削除した場合の復旧方法

Git スタッシュを誤って削除した場合の復旧方法

Takahiro Iwasa
Takahiro Iwasa
2 min read
Git

Git スタッシュが誤って削除された場合でも、ファイルを復元できます。

コミット履歴出力

次のコマンドでコミット履歴を出力してください。

git fsck | awk '/dangling commit/ {print $3}' >> commit_list.txt

以下のような結果が表示されます。

dangling commit bfebf68feeebf07a86d7e3e4da77962de67c14ee
dangling commit 86f4aec78bd51c80b0fd2d5d83963a2259dc72b4
dangling commit 48fd9f8f97a577bc8a87b133f6e1dd789a692bd0
dangling commit 64ff8c33fb878afb8bf5c99c1b8d8fdfaa1b1f3c
dangling commit bdff88e13803e6c7737691aa1fb6f1e038321966
...
...
...

コミットの要約出力

以下のコマンドを実行して、コミットの要約を出力してください。

#!/bin/bash

while read line
do
  git show $line
done < ./commit_list.txt

以下のような結果が表示されます。

commit bfebf68feeebf07a86d7e3e4da77962de67c14ee
Merge: b046240 5ee731a
Author: Takahiro Iwasa <[email protected]>
Date:   Fri Feb 12 22:01:47 2016 +0900

    On develop: 0212

復元したいコミット ID の特定

日付や時刻、コミットメッセージなどを基に、上記の出力から復元したいコミット ID を特定してください。

復元

以下のコマンドを実行して、コミット ID でコミットをチェリーピックしてください。

git cherry-pick -n -m1 <YOUR_COMMIT_ID>

まとめ

誤ってスタッシュを削除してしまった場合、落ち着いて上記の手順を実施してみてください。 スタッシュを回復できるはずです。

この投稿が、お役に立てば幸いです。

Takahiro Iwasa

Takahiro Iwasa

Software Developer at KAKEHASHI Inc.
Involved in the requirements definition, design, and development of cloud-native applications using AWS. Now, building a new prescription data collection platform at KAKEHASHI Inc. Japan AWS Top Engineers 2020-2023.