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.
処方箋データ収集基盤の設計・開発・運用に携わっています。