Gitで落としたスタッシュを復元する方法
Gitスタッシュは、現在の作業ツリーの状態を一時的に保存する機能です。誤ってスタッシュを削除したり、スタッシュのリストから消えてしまった場合でも、復元することが可能です。
方法1: git reflog
を使用する
git reflog
コマンドを実行して、過去のコミットやリセットの履歴を表示します。git reflog
- スタッシュを削除した時のコミットハッシュを探します。
- そのコミットハッシュを使って、スタッシュを復元します。
git checkout <commit-hash>
git fsck
コマンドを実行して、リポジトリの整合性をチェックします。git fsck --lost-found
- 削除されたスタッシュがリストされる場合があります。
- そのスタッシュを復元するには、
git checkout
コマンドを使用します。
注意:
- スタッシュを復元する前に、現在の作業ツリーの状態を保存することをおすすめします。
- スタッシュの復元がうまくいかない場合は、リポジトリのバックアップから復元する必要があるかもしれません。
関連するコマンド:
git stash
: スタッシュを作成する。git stash list
: スタッシュの一覧を表示する。git stash pop
: スタッシュを適用し、スタッシュを削除する。
Gitスタッシュ復元方法のコード例
# スタッシュを削除した時のコミットハッシュを特定
git reflog
# スタッシュを復元
git checkout <commit-hash>
# 削除されたスタッシュを検出
git fsck --lost-found
# スタッシュを復元
git checkout <stash-ref>
例:
# スタッシュを削除した時のコミットハッシュが "HEAD@{1}"だった場合
git checkout HEAD@{1}
# 削除されたスタッシュが "refs/stash@{1}"だった場合
git checkout refs/stash@{1}
<commit-hash>
と<stash-ref>
は、実際のコミットハッシュやスタッシュの参照に置き換えてください。git reflog
とgit fsck
は、リポジトリの履歴や整合性をチェックするコマンドです。git checkout
は、指定したコミットや参照の状態にチェックアウトするコマンドです。
方法3: git log --graph
を使用する
git log --graph
コマンドを実行して、コミットの履歴をグラフ形式で表示します。- そのコミットハッシュを使って、スタッシュを復元します。
git bisect start
コマンドを実行して、バイセクトモードを開始します。- スタッシュを削除した時のコミットを「悪い」コミットとしてマークします。
git bisect run
コマンドを実行して、スタッシュが削除されたコミットを特定します。
git bisect
は、バグの特定に使用するツールですが、スタッシュの復元にも応用できます。git bisect
を使用する場合は、リポジトリの履歴を理解している必要があります。
git recovery git-stash